从python中的字符串中的其他字符拆分数字

时间:2017-02-05 12:08:18

标签: python string list

我有这样的字符串; '17.''0,5'',5''CO2-heidet''1990ndatel'等。我想按如下方式拆分它们:['17', '.'], ['0', ',', '5'], [',', '5'], ['CO', '2', '-heidet'], ['1990', 'ndatel']等。

我怎样才能在python中有效地做到这一点?

2 个答案:

答案 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']