Я пытаюсь выделить строку, подобную следующей, в список пар ключ / значение:
line1 = "keyword1: value1 keyword2: value2 keyword1: value3 keyword3: value4"
Я написал следующий код с использованием регулярных выражений для достижения этой цели:
import re
line1 = "keyword1: value1 keyword2: value2 keyword1: value3 keyword3: value4"
keywords = [ re.escape(k) for k in ['keyword1', 'keyword2', 'keyword3'] ]
any_keyword = '|'.join(keywords)
regex = "(" + any_keyword + "):(.+?)(?:" + any_keyword + "|$)"
print(line1)
print(regex)
for m in re.finditer(regex, line1):
print(m)
Соответствия, которые я получаю:
<re.Match object; span=(0, 25), match='keyword1: value1 keyword2'>
<re.Match object; span=(34, 59), match='keyword1: value3 keyword3'>
и, конечно, они включают в себя ключевое слово2 и ключевое слово3 в конце строки, поэтому я не получаю дополнительные объекты соответствия для этих ключевых слов.
Как я могу получить 4 совпадения, по одному на каждое ключевое слово в строке?