#python #regex
Вопрос:
Я пытаюсь захватить значение после строкового значения, такого как «Заголовок», используя регулярное выражение в Python.
Это то, что у меня есть до сих пор:
re.compile(r'[nr].*"title":s*([^nr]*)')
Проблема, с которой я сталкиваюсь, заключается в том, что он возвращает: [ ].
Моя цель-вернуть название должности из этой строки:
[{"title": "Inventory Accountant", "location": "Bern, KS", "snippet": "JOB PURPOSE
Любая помощь была бы очень признательна.
Комментарии:
1.
"title":s*".*?"
Попытайтесь получитьInventory Accountant
2. Это похоже на JSON; используйте
json.loads
для его анализа, а не регулярное выражение.
Ответ №1:
возможно, это не то, что вы ищете, но это может оказаться полезным в качестве альтернативного решения.
Содержит ли ваша строка список dict? (Потому что это так кажется)
Если это так, то вы можете загрузить его как JSON и с самого начала избегать регулярных выражений. Не забудьте удалить » [«и»] » из начала и конца строки.
Следующий пример:
import json
txt = '[{"title": "Inventory Accountant", "location": "Bern, KS", "snippet": "JOB PURPOSE"}]'
data = json.loads(txt[1:-1])
print(data['title'])
Должен вернуть Инвентаризационный бухгалтер
Ответ №2:
Я не знаю, являются ли регулярные выражения лучшим решением в этой ситуации. Вместо этого вы можете попробовать получить доступ к ключу «заголовок» из словаря, как указано в приведенном выше ответе.
Однако, если вам нужно использовать регулярное выражение, вот пример:
import re
string = '[{"title": "Inventory Accountant", "location": "Bern, KS", "snippet": "JOB PURPOSE"'
test = re.search(r'"title":(?P<val>.*?),', string)
value = test.group("val").strip()
print(value)
Это возвращает следующее значение: "Inventory Accountant"