#python #regex #python-requests #re
#python #регулярное выражение #python-запросы #python-re
Вопрос:
Как я могу получить полную строку, соответствующую слову, из объекта запроса
Например, у меня есть response=request.get(url) и print(response.text), и предположим, что если на выходе есть следующие строки, я пытаюсь получить полное слово, начинающееся с file_path и ожидаемого результата как «file_path: /opt/temp»
пользователь: abcd
search_file: f-abc-123
file_path: /opt/temp
ветка: разработка
email_to: abc@gmail.com
версия: 1.10.00
Ниже приведен мой код, который, похоже, не работает
import re
import requests
response=request.get("https://artifactory.com",header=(..),verify=False)
res=re.search(r'file_pathw ',response.text)
print(res.group(0))
Вывод, который я получил:
file_path
Ожидаемый результат:
file_path: /opt/temp
Комментарии:
1. Добавьте также свой вывод и ожидаемый результат
2. И проверьте свою схему URL.
3. попробуйте
res = re.search(r'file_path: .*',item).group(0)
4. @KlausD. Для меня это выглядит как структурированный ответ. Можете ли вы распечатать response.json(), а также ввести (response.json()) и посмотреть, является ли это dict ? Если да, то вы можете просто получить доступ по ключу.
Ответ №1:
Если вы действительно хотите разобрать построчно и убедиться, что вы получаете всю строку, если она соответствует вашей строке, тогда вы можете разделить выводимый текст на новые строки и проверить каждую строку на наличие текста, который вы ищете, например
r = requests.get("https://artifactory.com",header=(..),verify=False)
lines = r.text.split('n')
for line in lines:
if 'file_path' in line:
print(line)
Однако, если данные, которые вы получаете обратно, находятся в формате json, который, как я подозреваю, может быть из вашего описания выше, тогда вам обязательно следует воспользоваться форматом json для его обработки вместо разбора построчно. Вы можете сослаться на ключ для file_path в ответе json, например
r = requests.get("https://artifactory.com",header=(..),verify=False)
data = r.json()
print('file_path: ' data['file_path'])
Эти подходы не требуют регулярных выражений. Подход json является лучшим, если вы знаете, что имеете дело с ответами json, а не просто с каким-то текстовым ответом в неизвестном формате.
Комментарии:
1. Я попробовал первый способ, и он работает нормально. Спасибо!
Ответ №2:
попробуйте это,
#until a newline(n) is hit, consider all characters.
res= re.search(r'file_path[^n] ', response.text)
print(res.group(0))
вывод: ‘file_path: /opt/temp’
Комментарии:
1. Спасибо! Я попробую это