如何根据数字/非数字拆分字符串(使用正则表达式?)

时间:2010-11-18 19:02:15

标签: python regex string tokenize

我想将字符串拆分为python中的列表,具体取决于数字/非数字。 例如,

5 55+6+  5/

应该返回

['5','55','+','6','+','5','/']

我现在有一些代码循环遍历字符串中的字符并使用re.match(“\ d”)或(“\ D”)测试它们。我想知道是否有更好的方法来做到这一点。

P.S:必须与python 2.4兼容

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)

使用findallfinditer

>>> 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,就像在其他答案中一样。