我在解析包含字母和数字的字符串并取回列表时遇到问题。例如:
>>> s = '105Bii2016'
>>> foo(s)
['105', 'Bii', '2016']
现在我只能在数字在一起的情况下这样做:
def foo(s):
num, letter = '', ''
for i in s:
if i.isdigit():
num += i
else:
letter += i
return [letter, num]
当我调用它时:
>>> s = '1234gdfh1234'
>>> foo(s)
['gdfh', '12341234']
请您参考如下方法:
itertools.groupby 怎么样:
>>> s = '1234gdfh1234'
>>> from itertools import groupby
>>> print [''.join(v) for k,v in groupby(s,str.isdigit)]
['1234', 'gdfh', '1234']
另一种解决方案使用正则表达式:
>>> print [x for x in re.split(r'(\d+)',s) if x]
['1234', 'gdfh', '1234']
