Найти - Пользователи
Полная версия: вынуть регуляркой число из строки
Начало » Python для новичков » вынуть регуляркой число из строки
1
SoWar
Добрый день!
Необходимо из строки вида “13 456 342.12 руб” (кол-во групп разрядов может быть произвольным) вынуть цифры и точку в виде одного элемента массива.
Причем использовать можно только re.findall и сделать надо в одно действие, без объединения элементов массива.
Пробовал:
import re
s = '13 456 342.12 руб'
# список отдельных символов на выходе
out = re.findall('[\d|\.]',s)
# чтобы было то, что нужно добавляем
out = ''.join(out)

Помогите советом, пожалуйста.
bismigalis
re.sub(r'[^0-9.]', '', s)

или так
re.findall(r'[\d .]+', s)[0].strip()
SoWar
Только findall допустИм. Во втором варианте останутся пробелы между числами. В принципе вопрос именно про регулярку: можно ли пропускать часть подоходящего текста, при этом не разбивая на группы.
Т.е. если мне нужны первые две числовые группы, то можно записать:
re.findall('(\d+)\s+(\d+)',s)
# [('13', '456')] на выходе
Можно ли как-нибудь записать так, чтобы \s+ между группами пропускался или это невозможно? Необходимость в группах тогда отпадет.
bismigalis
невозможно

SoWar
Во втором варианте останутся пробелы между числами
re.findall(r'[\d .]+', s)[0].replace(' ','')
py.user.next
SoWar
Необходимо из строки вида “13 456 342.12 руб” (кол-во групп разрядов может быть произвольным) вынуть цифры и точку в виде одного элемента массива.
приведи пример выходной строки
SoWar
py.user.next:
['13456342.12']
bismigalis, спасибо, но нужен только findall, без дальнейшей обработки.
py.user.next
>>> import re
>>> 
>>> s = '13 456 342.12 руб'
>>> out = ''.join(re.findall(r'[\d.]+', s))
>>> out
'13456342.12'
>>>

такой предлагал уже bismigalis
>>> import re
>>> 
>>> s = '13 456 342.12 руб'
>>> out = re.sub(r'[^\d.]', r'', s)
>>> out
'13456342.12'
>>>

SoWar
Можно ли как-нибудь записать так, чтобы \s+ между группами пропускался
нет
SoWar
Спасибо.
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