我希望能够拆分如下内容:
"20 - 5 - 4 + 10 + 4"
将其中一个作为签名号码:
["20", "-5", "-4", "+10", "+4"]
或分成两个未签名的列表:
["20", "10", "4"]
["5", "4"]
我是否可以使用内置方法在python中执行此操作?
答案 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]