2017-02-11 3 views
2

Я пытаюсь извлечь целые числа, найденные в случайно генерируемых строках этого типа структуры;Извлечение целых чисел из строки - включая отрицательные целые числа

string1 = "3x-2-44" 

Мне удалось заполнить список целыми числами, найденными в строке;

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

«L1» проведет полезный список всех целых чисел, но не показывает, если число отрицательное, например, для «string1» L1 будет проводить

[3,2,44] 

, а не что-то вроде:

[3,-2,-44] 

Как можно было бы также получить предыдущий символ целого, чтобы определить, является ли его положительным или отрицательным?

+1

'г '\ d +' '=>' г» -? \ 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]