mylist= '123+45+34*7-3*45/5'
使用re.split()
获取使用python的['123','45','34','7','3','45','5']
。
我试过:
import re
print(re.split('+|-|*|/',mylist)
还有这个
print(re.split(r'[+-*/]',mylist)
这让我犯了错误。
我是初学者。
发布于 2017-08-09 06:52:43
您的第一个解决方案失败了,因为+
和*
是regex -如果要将它们作为文字使用,则需要将它们转义。以下几点是可行的:
print(re.split(r'\+|-|\*|/',mylist)
注意,我使用了一个原始字符串--使用regexes总是一个好主意,以减少您需要的反斜杠的数量。
您的第二个解决方案失败了,因为-
是字符类中的元字符(并且在+
和*
之间没有“字符范围”)。通过将它放置在字符类的开头或结尾,-
失去了它的特殊意义,因此下面的内容会奏效:
print(re.split(r'[-+*/]',mylist)
发布于 2017-08-09 06:17:14
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文档
发布于 2017-08-09 06:21:33
您可以使用re.findall('\d+', string)
>>> 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+
是一个或更多位数。
https://stackoverflow.com/questions/45582790
复制相似问题