new_list = []pattern = re.compile("([0-9]+)([a-zA-Z]+)")for i, x in enumerate(my_list): if (re.match(r"([0-9]+)([a-zA-Z]+)", x)): result = pattern.match(x) #result = result.group(1) + ' ' + result.group(2) new_list.append(result.group(1)) new_list.append(result.group(2)) i = i + 2 new_list = new_list + my_list[i:]return new_list電流輸出:Input: ['2fee', 'lmao', '222wow']Output: ['2', 'fee', '222', '222wow', '222', 'wow']所需的輸出:['2', 'fee', 'lmao', '222', 'wow']如何獲得此輸出?非常感謝你
2 回答

忽然笑
TA貢獻1806條經驗 獲得超5個贊
itertools.groupby搭配使用str.isdigit:
from itertools import groupby
L = ['2fee', 'lmao', '222wow']
res = [''.join(j) for strng in L for _, j in groupby(strng, key=str.isdigit)]
# ['2', 'fee', 'lmao', '222', 'wow']
請注意,這將拆分出現在字符串中的每個數字實例。例如,'1a23bc'將被分割為'1','a','23','bc'。

HUWWW
TA貢獻1874條經驗 獲得超12個贊
或者,嘗試:
import re
input = ['2fee', 'lmao', '222wow']
output = []
for s in input:
output.extend(t for t in re.split('(\d+)', s) if t)
print output
添加回答
舉報
0/150
提交
取消