Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2014 18:54:58

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

>>> re.findall(r"\-?\d*", "q-15")
['', '-15', '']
>>> re.findall(r"\-?\d+", "q-15")
['-15']
>>> 

Очевидно, первый шаблон допускает совпадение с ничем. ни минуса ни цифр, вот вы это и выводите.



Офлайн

#2 Янв. 17, 2014 19:32:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9885
Репутация: +  853  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

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
>>>



Офлайн

#3 Янв. 18, 2014 10:57:17

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

вырезать из строки цифровые символы

doza_and
точно. Вот я протормозил, findall же надо было сделать чтоб полностью глянуть. Надо внимательнее быть, на первый взгляд мне показалось, что group(0) должен вывести искомое.

Офлайн

#4 Янв. 20, 2014 12:07:35

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

Бесстыдники

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

Вы возвращаете первый элемент списка, который получаете ф-ей re.findall, вот вам и пустая строка. Кроме того, под шаблон со звёздочкой попадает также и просто ничего, вот и результат.



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#5 Янв. 20, 2014 13:28:35

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

вырезать из строки цифровые символы

Да поняли уже все всё, чего еще раз было объяснять ))

Офлайн

#6 Янв. 20, 2014 14:13:00

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

вырезать из строки цифровые символы

Извините, Я пока писал этот пост и форматировал, то уже добавились ответы, а их сперва не было )



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version