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+1 つ以上の数字と\D+一致し、1 つ以上の非数字と一致します。( ) 数字のグループまたは数字以外のグループ\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 に答える