Регулярное выражение для сопоставления строки в двойных кавычках в Python

#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"