← Все вопросы
Как вытащить из строки все числа? re.findall не вытаскивает многозначные
14
Пытаюсь достать числа из 'дом 12, кв 345'. Пробовал перебирать символы через isdigit(), но число разваливается на отдельные цифры. Как получить именно ['12', '345']?
3 ответа
24
✓ Принятый ответ — помог автору
Регулярка \d+ — одна или несколько цифр подряд:
import re
re.findall(r'\d+', 'дом 12, кв 345') # ['12', '345']
Если нужны сразу int: [int(x) for x in re.findall(r'\d+', s)]. А для чисел с минусом и точкой — r'-?\d+\.?\d*'.
Арсений Данилов `+` — вот чего не хватало, спасибо · 2 месяца назад
8
Твоя ошибка в том, что isdigit() смотрит на один символ. re.findall(r'\d+', s) группирует цифры в числа.
-2
Перебирай символы и склеивай в буфер, пока идут цифры. (это работает, но регуляркой в разы короче)
Nick Dolbnya зачем велосипед, есть re.findall · 2 месяца назад
Ваш ответ
Войдите, чтобы ответить на вопрос.