如何根据数字/非数字分割字符串(使用正则表达式?)
我想在Python中把一个字符串根据数字和非数字的情况分割成一个列表。比如,
5 55+6+ 5/
应该返回
['5','55','+','6','+','5','/']
我现在有一些代码,它会遍历字符串中的每个字符,并用re.match("\d")或("\D")来测试这些字符。我在想有没有更好的方法来做到这一点。
附注:必须兼容Python 2.4版本。
4 个回答
1
使用 findall
或 finditer
:
>>> re.findall(r'\d+|[^\s\d]+', '5 55+6+ 5/')
['5', '55', '+', '6', '+', '5', '/']
2
这个是最简单的一个 :)
re.findall('\d+|[^\d]+','134aaaaa')
5
假设你需要把6和5之间的+
号配对起来(这个你漏掉了),
>>> import re
>>> s = '5 55+6+ 5/'
>>> re.findall(r'\d+|[^\d\s]+', s)
['5', '55', '+', '6', '+', '5', '/']