2

我想要一个正则表达式模式,它根据字符串中存在的数字拆分字符串

50cushions => [50,cushions]
30peoplerescued20children => [30,peoplerescued,20,children]
moon25flightin2days => [moon,25,flightin,2,days]

是否可以使用正则表达式来执行此操作,否则最好的方法是什么?

4

1 回答 1

4
>>> re.findall(r'\d+|\D+', '50cushions')
['50', 'cushions']
>>> re.findall(r'\d+|\D+', '30peoplerescued20children')
['30', 'peoplerescued', '20', 'children']
>>> re.findall(r'\d+|\D+', 'moon25flightin2days')
['moon', '25', 'flightin', '2', 'days']

where\d+匹配一个或多个数字并\D+匹配一个或多个非数字。\d+|\D+将找到 ( |) 一组数字或非数字,并将结果附加到匹配列表中。

或与itertools

>>> from itertools import groupby
>>> [''.join(g) for k, g in groupby('moon25flightin2days', key=str.isdigit)]
['moon', '25', 'flightin', '2', 'days']
于 2013-05-22T13:17:26.303 回答