Разбор пар имя-значение с кавычками в Python - PullRequest
0 голосов
/ 24 февраля 2020

Мне нужно разобрать строки пар имя-значение. Значения могут быть в кавычках, предположительно, чтобы их значения могли содержать символы-разделители. Пример:

Path="/5E13F93E/5E142BAA" Ref="U4"  Part="1"

Пример Funkier:

Path="/5E13F93E= 5E14 2BAA" Ref="U4"  Part="1"

Есть ли стандартный способ сделать это в Python? Я не представляю, как написать собственный анализатор уровня персонажа для этого в 2020 году, но я не могу сразу найти ничего в стандартной библиотеке, которая делает это.

1 Ответ

2 голосов
/ 24 февраля 2020

Предполагая, что это серия назначений переменных POSIX, вы можете использовать модуль shlex:

>>> import shlex
>>> list(shlex.shlex('Path="/5E13F93E= 5E14 2BAA" Ref="U4"  Part="1"'))
['Path', '=', '"/5E13F93E= 5E14 2BAA"', 'Ref', '=', '"U4"', 'Part', '=', '"1"']

Вам придется самостоятельно удалять внешние кавычки из значений, но это может быть немного сложнее. Лидирующие кавычки легко определить: если первый символ значения " или ', удалите его. Однако, если значение last является кавычкой, вам необходимо сначала проверить, не экранировано ли оно (например, foo=bar\"

...