Найти - Пользователи
Полная версия: вырезать из строки цифровые символы
Начало » Центр помощи » вырезать из строки цифровые символы
1 2
doza_and
>>> re.findall(r"\-?\d*", "q-15")
['', '-15', '']
>>> re.findall(r"\-?\d+", "q-15")
['-15']
>>> 

Очевидно, первый шаблон допускает совпадение с ничем. ни минуса ни цифр, вот вы это и выводите.
py.user.next
vrabey
как написать функцию
>>> import re
>>> 
>>> def f(s):
...     match = re.search(r'-?\d+', s)
...     return match and match.group()
... 
>>> for i in "-1", "2d", "-3sf", "4":
...     print(f(i))
... 
-1
2
-3
4
>>>
dimy44
doza_and
точно. Вот я протормозил, findall же надо было сделать чтоб полностью глянуть. Надо внимательнее быть, на первый взгляд мне показалось, что group(0) должен вывести искомое.
Master_Sergius
Бесстыдники

>>> s = 'dgg35l-6'
>>> pattern = '\-?\d*'
>>> re.findall(pattern, s)
['', '', '', '35', '', '-6', '']
>>> pattern = '\-?\d+'
>>> re.findall(pattern, s)
['35', '-6']

Вы возвращаете первый элемент списка, который получаете ф-ей re.findall, вот вам и пустая строка. Кроме того, под шаблон со звёздочкой попадает также и просто ничего, вот и результат.
dimy44
Да поняли уже все всё, чего еще раз было объяснять ))
Master_Sergius
Извините, Я пока писал этот пост и форматировал, то уже добавились ответы, а их сперва не было )
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB