3
我要像一個字符串分割:如何將字符串拆分爲列表,並考慮負數?
strg = "22+11-aa+bb-44-"
到像這樣的列表:
my_list = ['22', '+','11', '-', 'aa', '+', 'bb', '-44', '-']
所有非數字元素總共被劃分出來,如果以後的元素「 - 」由的數字,那麼它應該與' - '連接在一起併成爲負數。
我要像一個字符串分割:如何將字符串拆分爲列表,並考慮負數?
strg = "22+11-aa+bb-44-"
到像這樣的列表:
my_list = ['22', '+','11', '-', 'aa', '+', 'bb', '-44', '-']
所有非數字元素總共被劃分出來,如果以後的元素「 - 」由的數字,那麼它應該與' - '連接在一起併成爲負數。
沒有regexs,使得它更長的時間,但速度更快的大型數據集的解決方案:
strg="22+11-aa+bb-44-"
arr=[]
i=0
for j in range(len(strg)):
if strg[j] in '+-':
arr.append(strg[i:j])
if strg[j]=='-' and strg[min(j+1,len(strg)-1)].isdigit():
i=j
else:
arr.append(strg[j])
i=j+1
print arr
結果:
['22', '+', '11', '-', 'aa', '+', 'bb', '-44', '-']
import re
strg = "22+11-aa+bb-44+-zz99+-33-"
print re.findall(r'-?\d+|[a-z]+|\W+?', strg)
結果:
['22', '+', '11', '-', 'aa', '+', 'bb', '-44', '+', '-', 'zz', '99', '+', '-33', '-']
有某些原因'11'不在輸出中? –