我有这样的字符串; '17.'
,'0,5'
,',5'
,'CO2-heidet'
,'1990ndatel'
等。我想按如下方式拆分它们:['17', '.'], ['0', ',', '5'], [',', '5'], ['CO', '2', '-heidet'], ['1990', 'ndatel']
等。
我怎样才能在python中有效地做到这一点?
答案 0 :(得分:4)
您也可以将itertools.groupby()
与键一起用作str.isdigit
来实现此目的:
>>> from itertools import groupby
>>> my_list = ['17.', '0,5', ',5', 'CO2-heidet', '1990ndatel']
>>> [[''.join(j) for i, j in groupby(l, str.isdigit)] for l in my_list]
[['17', '.'], ['0', ',', '5'], [',', '5'], ['CO', '2', '-heidet'], ['1990', 'ndatel']]
答案 1 :(得分:3)
这是re.split
的一种方式:
In [1]: import re
In [2]: def split_digits(s):
...: return [g for g in re.split(r'(\d+)', s) if g]
...:
In [3]: for s in ['17.', '0,5', ',5', 'CO2-heidet', '1990ndatel']:
...: print(repr(s), 'becomes', split_digits(s))
...:
'17.' becomes ['17', '.']
'0,5' becomes ['0', ',', '5']
',5' becomes [',', '5']
'CO2-heidet' becomes ['CO', '2', '-heidet']
'1990ndatel' becomes ['1990', 'ndatel']