pyparsing wrong output

Gabriel Genellina gagsl-py2 at yahoo.com.ar
Sat Feb 13 01:41:16 CET 2010


En Fri, 12 Feb 2010 10:41:40 -0300, Eknath Venkataramani  
<eknath.iyer at gmail.com> escribió:

> I am trying to write a parser in pyparsing.
> Help Me. http://paste.pocoo.org/show/177078/ is the code and this is  
> input
> file: http://paste.pocoo.org/show/177076/ .
> I get output as:
> <generator object at 0xb723b80c>

There is nothing wrong with pyparsing here. scanString() returns a  
generator, like this:

py> g = (x for x in range(20) if x % 3 == 1)
py> g
<generator object <genexpr> at 0x00E50D78>

A generator is like a function that may be suspended and restarted. It  
yields one value at a time, and only runs when you ask for the next value:

py> next(g)
1
py> next(g)
4

You may use a `for` loop to consume the generator:

py> for i in g:
...   print i
...
7
10
13
16
19

Once it run to exhaustion, asking for more elements always raises  
StopIteration:

py> next(g)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
StopIteration

Try something like this:

results = x.scanString(filedata)
for result in results:
     print result

See http://docs.python.org/tutorial/classes.html#generators

-- 
Gabriel Genellina




More information about the Python-list mailing list