从字符串中提取所有数字及其符号 - Python 2.7

时间:2016-01-24 19:10:15

标签: python regex python-2.7

如何提取所有数字以及符号?

字符串可以是这些 -1+110+20-123+23-432-543

我正在使用这个简单的正则表达式

event_book_value = re.findall('\d+', event_book_value)

它返回数字,但不随符号一起返回。

2 个答案:

答案 0 :(得分:3)

在正则表达式前面添加一个可选符号:

[+-]?\d+
  • [+-] - 与+-匹配的character set
  • ? - 前一场比赛为一次或零次
  • \d+ - 一个或多个数字

See it in action

答案 1 :(得分:1)

类似的东西:

def signSplit(string):
    nums = []
    cur = ""
    signs = "+-"
    for c in string:
        if c in signs:
            if cur:#if there is a number (so not the very beginning) then add it to nums
                nums.append(cur)
            cur = c #start out with the cur storing the sign
        elif c.isdigit():
            cur+=c
        else:
            raise ValueError("unrecognised character: %r"%c)
    nums.append(cur)
    return nums


print(signSplit("+23-432-543"))

它可能对您的需求来说太慢了,但它可以在纯Python中运行,以便以后编辑。