Import re . Python. Помощь с парсингом информации
Всем добра! Я использую import re для парсинга откуда либо, обычно мне нужно узнать что находится между известными значениями, например я хочу узнать какое слово будет между "Шла" и "по шоссе" для этого я использую код :
import re
text = "Шла Cаша по шоссе и сосала сушку"
pars_text = re.findall('Шла.*?по шоссе', text)
print(pars_text[0])
# ответ: "Шла Cаша по шоссе"
Мой вопрос заключается в том , как получить просто слово "Саша" без остального. Обычно я просто делаю replace и заменяю не нужное , но это уже порядком надоело , у верен что можно получить сразу искомое значение без лишнего . Спасибо.
Ответы (2 шт):
У вас написано практически верно) нужно только добавить "()"
import re
text = "Шла Cаша по шоссе и сосала сушку"
pars_text = re.findall('Шла (.*?) по шоссе', text)
print(pars_text[0])
>>> Cаша
В первую очередь нужно в регулярном выражении взять в круглые скобки то, что вы хотите узнать, в вашем примере оно должно выглядеть так: 'Шла(.*?)по шоссе'. И вместо findall в данном случае вероятно логичнее использовать match или search (в зависимости от того, нужно ли искать совпадение с начала строки или с любой позиции). Эти методы возвращают объект типа re.Match, при помощи которого нужно, во-первых, проверить, что поиск был успешен, а, во-вторых, собственно получить искомое значение.
text = "Шла Саша по шоссе"
m = re.match(r'Шла(.*?)по шоссе', text)
if m:
print(m.group(1))
else:
print("Ничего не нашли")`
Метод group возвращает значение в скобках с указанным номером, начиная с единицы (под номером 0 весь текст, который попал под регулярное выражение).