2012-05-10 8 views
5

Actualmente estoy tratando de obtener un resultado de pyparsing como una lista pura para poder aplanarlo. Leí en la documentación queObteniendo una lista pura de 'pyparsing.ParseResults'

ParseResults también se pueden convertir a una lista ordinaria de cadenas llamando a AsList(). Tenga en cuenta que esto quitará los resultados de cualquier nombre de campo que se haya definido para cualquier elemento de análisis integrado. (El módulo pprint es especialmente bueno en la impresión de los contenidos anidados dadas por asList().)

así que he intentado definir un setParseAction donde trabajo en la ParseResult

lo que consigo es:

>>> print type(tokens.args[0]) 
<class 'pyparsing.ParseResults'> 
>>> print type(tokens.args[0].asList) 
<type 'instancemethod'> 

Pero esperaba/necesitaba que el último fuera de la lista de tipos. Debo perderme algo importante cuando uso asList() aquí.

Dietmar

PD: Aquí una MTC de lo que las fichas parecen realmente:

>>> print tokens.args[0] 
['foo1', ['xxx'], ',', 'graphics={', 'bar1', ['xxx,yyy'], ',', 'bar2', 
['xxx,yyy'], ',', 'bar3', ['xxx,yyy,', 'zzz=baz', ['xxx,yyy']], '}'] 

Respuesta

7

tokens.args[0].asList es una función. tokens.args[0].asList() es una llamada a esa función (sin argumentos más allá del argumento self). Parece que le gustaría saber el tipo de esa última expresión.

4

Se puede tratar

print type(tokens.args[0].asList()) 
Cuestiones relacionadas