首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用mylist= ()将字符串mylist= '123+45+34*7-3*45/5‘拆分为['123','45','34','7','3','45','5']

如何使用mylist= ()将字符串mylist= '123+45+34*7-3*45/5‘拆分为['123','45','34','7','3','45','5']
EN

Stack Overflow用户
提问于 2017-08-09 06:08:25
回答 3查看 45关注 0票数 0

mylist= '123+45+34*7-3*45/5'使用re.split()获取使用python的['123','45','34','7','3','45','5']

我试过:

代码语言:javascript
运行
复制
import re
print(re.split('+|-|*|/',mylist)

还有这个

代码语言:javascript
运行
复制
print(re.split(r'[+-*/]',mylist)

这让我犯了错误。

我是初学者。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-08-09 06:52:43

您的第一个解决方案失败了,因为+*是regex -如果要将它们作为文字使用,则需要将它们转义。以下几点是可行的:

代码语言:javascript
运行
复制
print(re.split(r'\+|-|\*|/',mylist)

注意,我使用了一个原始字符串--使用regexes总是一个好主意,以减少您需要的反斜杠的数量。

您的第二个解决方案失败了,因为-是字符类中的元字符(并且在+*之间没有“字符范围”)。通过将它放置在字符类的开头或结尾,-失去了它的特殊意义,因此下面的内容会奏效:

代码语言:javascript
运行
复制
print(re.split(r'[-+*/]',mylist)
票数 3
EN

Stack Overflow用户

发布于 2017-08-09 06:17:14

代码语言:javascript
运行
复制
import re
p = re.compile('\W+')
p.split('123+45+34*7-3*45/5')

输出为['123', '45', '34', '7', '3', '45', '5']

\W匹配任何非字母数字字符;这相当于类[^a-zA-Z0-9_]

有关更多信息,请参阅用于正则表达式使用的Python文档

票数 1
EN

Stack Overflow用户

发布于 2017-08-09 06:21:33

您可以使用re.findall('\d+', string)

代码语言:javascript
运行
复制
>>> import re
>>> string = '123+45+34*7-3*45/5'
>>> print(re.findall('\d+', string))

['123', '45', '34', '7', '3', '45', '5']

说明:\d是一个数字(0-9范围内的一个字符),而+表示1次或更多次。所以,\d+是一个或更多位数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45582790

复制
相关文章

相似问题

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