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

0 投票
4 回答
2491 浏览
提问于 2025-04-16 07:17

我想在Python中把一个字符串根据数字和非数字的情况分割成一个列表。比如,

5 55+6+  5/

应该返回

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

我现在有一些代码,它会遍历字符串中的每个字符,并用re.match("\d")或("\D")来测试这些字符。我在想有没有更好的方法来做到这一点。

附注:必须兼容Python 2.4版本。

4 个回答

1

使用 findallfinditer

>>> 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', '/']

撰写回答