繁体   English   中英

如何将字符串拆分为列表,将负数考虑在内?

[英]How to split a string into a list, taking negative numbers into account?

我想分割一个字符串,如:

strg = "22+11-aa+bb-44-" 

进入这样的列表:

my_list = ['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', '-']

没有正则表达式的解决方案使其更长,但在大型数据集上更快:

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', '-']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM