我想要一个正则表达式模式,它根据字符串中存在的数字拆分字符串
50cushions => [50,cushions]
30peoplerescued20children => [30,peoplerescued,20,children]
moon25flightin2days => [moon,25,flightin,2,days]
是否可以使用正则表达式来执行此操作,否则最好的方法是什么?
我想要一个正则表达式模式,它根据字符串中存在的数字拆分字符串
50cushions => [50,cushions]
30peoplerescued20children => [30,peoplerescued,20,children]
moon25flightin2days => [moon,25,flightin,2,days]
是否可以使用正则表达式来执行此操作,否则最好的方法是什么?
>>> 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']