Нежадный разбор с помощью pyparsing

Я пытаюсь разобрать строку с помощью pyparsing. Эта строка состоит из нескольких (ключей, значений). Я бы хотел получить список (ключей, значений). Простой пример:

ids = 12 fields = name

должен привести к чему-то вроде: [('ids', '12'), ('fields', 'name')]

Более сложный пример:

ids = 12, 13, 14 fields = name, title

должен привести примерно так: [('ids', '12, 13, 14 '), (' fields ',' name, title ')]

PS: кортеж внутри результирующего списка является просто примером. Это может быть диктат, или другой список, или что-то еще, это не так важно.

Но что бы я ни пробовал до сих пор, я получаю такие результаты: [('ids', '12 fields ')]

Pyparsing поглощает следующий ключ, учитывая, что он также является частью значения.

Вот пример кода:

import pyparsing as P

key = P.oneOf("ids fields")
equal = P.Literal('=')
key_equal = key + equal
val = ~key_equal + P.Word(P.alphanums+', ')

gr = P.Group(key_equal+val)
print gr.parseString("ids = 12 fields = name")

Кто-нибудь может мне помочь? Спасибо.

5
задан blubb 12 August 2011 в 09:46
поделиться