首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在python3.5中使用拆分函数

在python3.5中使用拆分函数
EN

Stack Overflow用户
提问于 2018-02-23 23:07:24
回答 5查看 2.5K关注 0票数 5

尝试拆分编号为7的字符串,我希望在拆分字符串的第二部分中包含7。

代码:

代码语言:javascript
复制
a = 'cats can jump up to 7 times their tail length'

words = a.split("7")

print(words)

输出:

代码语言:javascript
复制
['cats can jump up to ', ' times their tail length']

字符串被拆分,但第二部分不包括7。

我想知道如何才能包含7。

注意:不能重复Python split() without removing the delimiter,因为分隔符必须是第二个字符串的一部分。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2018-02-23 23:23:31

在一行中,对字符串的其余部分使用re.split,并过滤re.split留下的最后一个空字符串:

代码语言:javascript
复制
import re
a = 'cats can jump up to 7 times their tail length'
print([x for x in re.split("(7.*)",a) if x])

结果:

代码语言:javascript
复制
['cats can jump up to ', '7 times their tail length']

在拆分正则表达式中使用()告诉re.split不要丢弃分隔符。(7)正则表达式可以工作,但是会像str.partition一样创建一个包含3项的列表,并且需要进行一些后处理,所以没有一行程序。

现在,如果数字未知,正则表达式(再一次)是最好的方法。只需将代码更改为:

代码语言:javascript
复制
[x for x in re.split("(\d.*)",a) if x]
票数 5
EN

Stack Overflow用户

发布于 2018-02-23 23:10:39

要做到这一点,一种简单而幼稚的方法是找到要拆分的索引,并对其进行切片:

代码语言:javascript
复制
>>> 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')
票数 8
EN

Stack Overflow用户

发布于 2018-02-23 23:13:58

另一种方法是使用str.partition

代码语言:javascript
复制
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

代码语言:javascript
复制
x, *y = a.partition('7')
y = ''.join(y)
print((x, y))
# ('cats can jump up to ', '7 times their tail length')

或者手动完成:

代码语言:javascript
复制
sep = '7'
x = a.split(sep)
x[1] = sep + x[1]
print(tuple(x))
# ('cats can jump up to ', '7 times their tail length')
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48950806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档