У меня есть файл, который я пытаюсь проанализировать и который содержит пары ключ-значение. Где ключ начинается с «-», за которым следуют буквенные символы и значение после него, как показано на рисунке ниже.
Когда я анализирую файл с помощью приведенного ниже шаблона регулярного выражения, я легко могу получить ключи и значения, но когда значения включают несколько слов или данных в кавычках (что также соответствует значению ключа), мое сопоставление с шаблоном не удается. Я пробовал несколько итераций сопоставления с регулярным выражением, но не смог получить желаемый результат. Мне удалось найти шаблон регулярного выражения, соответствующий тексту в кавычках «(. *?)», Но я не смог использовать оба шаблона одновременно. Любая помощь, чтобы получить желаемый результат ниже, очень ценится.
![Keys and Values](https://i.stack.imgur.com/a9xeU.png)
Мой код (требуемые результаты только для первой строки) :
mystring = '''-desc none -type used -cost med -color blue
-desc none -msg This is a a message -name test
-desc "(-type old -cost high)" -color green'''
mydict = {}
item_num = 0
for line in mystring.splitlines():
quoted = re.findall('"(.*?)"', line)
key_value = re.findall('(-\w+\s+)(\S+)', line)
print(key_value)
### Output ###
[('-desc ', 'none'), ('-type ', 'used'), ('-cost ', 'med'), ('-color ', 'blue')]
[('-desc ', 'none'), ('-msg ', 'This'), ('-name ', 'test')]
[('-desc ', '"(-type'), ('-cost ', 'high)"'), ('-color ', 'green')]
### Desired Output ###
[('-desc ', 'none'), ('-type ', 'used'), ('-cost ', 'med'), ('-color ', 'blue')]
[('-desc ', 'none'), ('-msg ', 'This is a message'), ('-name ', 'test')]
[('-desc ', "(-type old -cost high)"), ('-color ', 'green')]