将字符串拆分为正数和负数python?

时间:2020-01-28 11:41:57

标签: python string split

我希望能够拆分如下内容:

"20 - 5 - 4 + 10 + 4"

将其中一个作为签名号码:

["20", "-5", "-4", "+10", "+4"]

或分成两个未签名的列表:

["20", "10", "4"]
["5", "4"]

我是否可以使用内置方法在python中执行此操作?

2 个答案:

答案 0 :(得分:3)

您可以使用re.findall

import re
s = "20 - 5 - 4 + 10 + 4"
new_s = re.findall('[-+]?\d+', s.replace(' ', ''))

输出:

['20', '-5', '-4', '+10', '+4']

答案 1 :(得分:0)

没有regex,但是如果不存在空格或其他任何运算符,则会中断。

expr = "20 - 5 - 4 + 10 + 4"
tokens = expr.split()
if tokens[0].isnumeric():tokens = ['+'] + tokens
tokens = [''.join(t) for t in zip(*[iter(tokens)]*2)]
pos = [t.strip('+') for t in tokens if '+' in t]
neg = [t.strip('-') for t in tokens if '-' in t]

或者按照@Sayse的建议:

tokens = expr.replace('- ','-').replace('+ ','+').split()
pos = [t.strip('+') for t in tokens if '-' not in t]
neg = [t.strip('-') for t in tokens if '-' in t]