尝试拆分编号为7
的字符串,我希望在拆分字符串的第二部分中包含7。
代码:
a = 'cats can jump up to 7 times their tail length'
words = a.split("7")
print(words)
输出:
['cats can jump up to ', ' times their tail length']
字符串被拆分,但第二部分不包括7。
我想知道如何才能包含7。
注意:不能重复Python split() without removing the delimiter,因为分隔符必须是第二个字符串的一部分。
发布于 2018-02-23 23:23:31
在一行中,对字符串的其余部分使用re.split
,并过滤re.split
留下的最后一个空字符串:
import re
a = 'cats can jump up to 7 times their tail length'
print([x for x in re.split("(7.*)",a) if x])
结果:
['cats can jump up to ', '7 times their tail length']
在拆分正则表达式中使用()
告诉re.split
不要丢弃分隔符。(7)
正则表达式可以工作,但是会像str.partition
一样创建一个包含3项的列表,并且需要进行一些后处理,所以没有一行程序。
现在,如果数字未知,正则表达式(再一次)是最好的方法。只需将代码更改为:
[x for x in re.split("(\d.*)",a) if x]
发布于 2018-02-23 23:10:39
要做到这一点,一种简单而幼稚的方法是找到要拆分的索引,并对其进行切片:
>>> a = 'cats can jump up to 7 times their tail length'
>>> ind = a.index('7')
>>> a[:ind], a[ind:]
('cats can jump up to ', '7 times their tail length')
发布于 2018-02-23 23:13:58
另一种方法是使用str.partition
a = 'cats can jump up to 7 times their tail length'
print(a.partition('7'))
# ('cats can jump up to ', '7', ' times their tail length')
要再次使用后面的部分加入数字,您可以使用str.join
x, *y = a.partition('7')
y = ''.join(y)
print((x, y))
# ('cats can jump up to ', '7 times their tail length')
或者手动完成:
sep = '7'
x = a.split(sep)
x[1] = sep + x[1]
print(tuple(x))
# ('cats can jump up to ', '7 times their tail length')
https://stackoverflow.com/questions/48950806
复制相似问题