我想分割一个字符串,如:
strg = "22+11-aa+bb-44-"
进入这样的列表:
my_list = ['22', '+','11', '-', 'aa', '+', 'bb', '-44', '-']
如果' - '之后的元素,则所有非数字元素都被完全拆分。由数字组成,然后它应该与' - '并成为负数。
答案 0 :(得分:6)
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', '-']
答案 1 :(得分:1)
没有正则表达式的解决方案使其更长,但在大型数据集上更快:
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', '-']