我想将字符串拆分为python中的列表,具体取决于数字/非数字。 例如,
5 55+6+ 5/
应该返回
['5','55','+','6','+','5','/']
我现在有一些代码循环遍历字符串中的字符并使用re.match(“\ d”)或(“\ D”)测试它们。我想知道是否有更好的方法来做到这一点。
P.S:必须与python 2.4兼容
答案 0 :(得分:5)
假设需要匹配6到5之间的+
(你错过了),
>>> import re
>>> s = '5 55+6+ 5/'
>>> re.findall(r'\d+|[^\d\s]+', s)
['5', '55', '+', '6', '+', '5', '/']
答案 1 :(得分:2)
这个是最简单的一个:)
re.findall('\d+|[^\d]+','134aaaaa')
答案 2 :(得分:1)
使用findall
或finditer
:
>>> re.findall(r'\d+|[^\s\d]+', '5 55+6+ 5/')
['5', '55', '+', '6', '+', '5', '/']
答案 3 :(得分:0)
如果订单无关紧要,您可以进行2次拆分:
re.split('\D+', mystring)
re.split('\d+', mystring)
但是,根据您的输入,它看起来可能是数学的...在这种情况下,顺序很重要。 :)
最好使用re.findall
,就像在其他答案中一样。