python在字符串中拆分数字

时间:2013-02-22 10:21:37

标签: python regex string module split

我想知道以下方式将字符串中的数字分开是最简单的方法(可能是正则表达式)。 示例:"abc12de34f5" 致:["abc", "12", "de", "34", "f", "5"]

但是如果字符串中有结合标记,请单独使用: 示例:"abc1,2de3.4f5" 致:["abc", "1,2", "de", "3.4", "f", "5"]

感谢您提出任何建议和意见

2 个答案:

答案 0 :(得分:5)

>>> import re
>>> s = "abc12de34f5"
>>> re.findall(r'[\d\W]+|[a-zA-Z]+', s)
['abc', '12', 'de', '34', 'f', '5']
>>> t = "abc1,2de3.4f5"
>>> re.findall(r'[\d\W]+|[a-zA-Z]+', t)
['abc', '1,2', 'de', '3.4', 'f', '5']

答案 1 :(得分:2)

使用itertools.groupby

的非重复解决方案
>>> st = "abc1,2de3.4f5"
>>> [''.join(v) for _, v in groupby(st,key = str.isalpha)]
['abc', '1,2', 'de', '3.4', 'f', '5']
>>> st = "abc12de34f5"
>>> [''.join(v) for _, v in groupby(st,key = str.isalpha)]
['abc', '12', 'de', '34', 'f', '5']