我有一個列表如下。如何分隔Python列表中的字符串和數字?
list = ['perfect','data1', 'queryda873', 'server187', 'tuplip91', 'time']
我該如何區分列表中的標記和數字?我想要類似於:
list = ['perfect','data', '1', 'queryda','873', 'server','187', 'tulip','91', 'time']
謝謝。
我有一個列表如下。如何分隔Python列表中的字符串和數字?
list = ['perfect','data1', 'queryda873', 'server187', 'tuplip91', 'time']
我該如何區分列表中的標記和數字?我想要類似於:
list = ['perfect','data', '1', 'queryda','873', 'server','187', 'tulip','91', 'time']
謝謝。
您可以嘗試使用正則表達式(re
)。特別是,\d+|\D+
:
>>> 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']
順便說一句,你不應該命名變量list
,因爲這個名字是採取內置的功能。
我意識到這已經有一個被接受的答案,但我不得不添加這個選擇,只是因爲我認爲它更容易閱讀和理解。
import re
import itertools
lst = ['perfect','data1', 'queryda873', 'server187', 'tuplip91', 'time']
broken = map(lambda s: re.findall(r'\d+|\D+', s), lst)
merged = list(itertools.chain.from_iterable(broken))
# merged is now ['perfect', 'data', '1', 'queryda', '873', 'server', '187', 'tuplip', '91', 'time']
抱歉,你能解釋itertools.chain.from_iterable(破)嗎?我試圖運行但錯誤警報。 – theteddyboy
你得到了什麼錯誤,你使用的是什麼版本的Python? –
我正在使用2.7.6 – theteddyboy
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']
你怎麼辦one2three?一,二,三? – GoingTharn
我試圖用「match = re.match(r」(....([0-9] + ..)「但不知道。 – theteddyboy