Estoy tratando de analizar una línea con pyparsing. Esta línea se compone de varios (clave, valores). Lo que me gustaría obtener es una lista de (clave, valores). Un ejemplo sencillo:Análisis no codicioso con pyparsing
ids = 12 fields = name
debería desembocar en algo como: [('ids', '12'), ('fields', 'name')]
Un ejemplo más complejo:
ids = 12, 13, 14 fields = name, title
debería desembocar en algo como: [('ids', '12, 13, 14'), ('fields', 'name, title')]
PS: la tupla en el interior la lista resultante es solo un ejemplo. Podría ser un dict u otra lista o lo que sea, no es tan importante.
Pero lo que yo he intentado hasta ahora obtener resultados como: [('ids', '12 fields')]
Pyparsing está comiendo la clave siguiente, teniendo en cuenta que también es parte del valor.
Aquí es un ejemplo de código:
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")
Alguien me puede ayudar? Gracias.
PD: editó ligeramente su publicación. Obtuve un mejor resultado con su solución. El problema es que solo obtengo la primera parte y no las siguientes partes. Obtengo [('ids', '12, 13,14 ')]. Me gustaría obtener [('ids', '12, 13,14 '), (' fields ',' name, title ')] – Oli
@Oli: gracias por la captura. Agregué la solución a tu segundo problema. – blubb
Muchas gracias. Exactamente lo que necesito – Oli