2017-02-11 165 views
2

我一直试图提取随机生成的这种结构类型的字符串中的整数;从一个字符串中提取整数 - 包括负整数

string1 = "3x-2-44" 

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

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

“L1”将持有的所有整数的一个有用的列表,但没有显示,如果是负数,例如用于“字符串1” L1将举行

[3,2,44] 

,而不是像这样:

[3,-2,-44] 

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

+1

'R '\ D +''=>的r - ?\ d +'' – Nullman

+1

可以有浮动号码,你想避免匹配? –

回答

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]