l = ['perfect','data1', 'queryda873', 'server187', 'tuplip91', 'time']
from itertools import groupby
[''.join(g) for x in l for k,g in groupby(x, key=lambda y: y.isdigit())]
['perfect', 'data', '1', 'queryda', '873', 'server', '187', 'tuplip', '91', 'time']
>>> import re
>>>
>>> L = ['perfect','data1', 'queryda873', 'server187', 'tuplip91', 'time']
>>>
>>> [s for v in (re.findall(r'\d+|\D+', s) for s in L) for s in v]
['perfect', 'data', '1', 'queryda', '873', 'server', '187', 'tuplip', '91', 'time']
使用itertools.groupby
您可以尝试使用正则表达式(^{} )。尤其是
\d+|\D+
:顺便说一下,您不应该将变量命名为
list
,因为该名称是由内置函数使用的。你知道吗我意识到这已经有了一个公认的答案,但我不得不添加这个选项,因为我认为它更容易阅读和理解。你知道吗
相关问题 更多 >
编程相关推荐