Разобрать асимметричную строку - PullRequest
0 голосов
/ 07 апреля 2020

Я пытаюсь разобрать строку:

'local:\n    ----------\n    instance_A:\n        ----------\n        release:\n            3-17-0\n    instance_B:\n        ----------\n        release:\n            3-16-0\n    log_level:\n        debug\n    primary_instance:\n        A\n'

, чтобы стать чем-то вроде

{"instance_A":"3-17-0","instance_B":"3-16-0"}

Проблема в том, что тире «асимметричны», например, они отличаются для instance_A и instance_B так что когда я делаю что-то вроде этого:

"".join(a.split()).replace('----------','')[6:-33]

(что я не думаю, что это хороший подход в любом случае из-за [6: -33]), я получаю

'instance_A:release:3-17-0instance_B:release:3-16-0'

, что было бы нормально, если бы был разделитель между 3-17-0instance_B

Пожалуйста, предложите pythoni c способ синтаксического анализа этой строки и оценки текущего подхода.

1 Ответ

0 голосов
/ 07 апреля 2020

Я сделал это так:

v = "".join(a.split()).replace('----------','').replace('release:','')[6:-33]
v = v[:17]+':'+v[17:]
i = iter(v.split(':'))
d = dict(zip(i,i))

Это работает, хотя это ужасно чертовски. Если бы кто-нибудь мог дать совет, чтобы это лучше выглядело, это было бы очень признательно

...