从字符串中提取整数 - 包括负整数

时间:2017-02-11 16:40:39

标签: python regex list integer

我一直在尝试提取随机生成的此类结构字符串中的整数;

string1 = "3x-2-44"

我已成功设法用字符串中的整数填充列表;

L1 = (re.findall(r'\d+', string1))

' L1'将包含所有整数的有用列表,但不显示该数字是否为负数,例如对于' string1' L1会举行

[3,2,44]

而不是像:

[3,-2,-44]

如何检索整数的前一个字符以确定其是正还是负?

1 个答案:

答案 0 :(得分:2)

您的regex应该是:

>>> import re
>>> string1 = "3x-2-44"

#                v for matching zero or one occurrence of `-` in string  
>>> re.findall('-?\d+', string1)
['3', '-2', '-44']

要将提取的数字字符串转换为int,您可以使用map作为:

>>> list(map(int, re.findall('-?\d+', string1)))
[3, -2, -44]