Giovanni Bajo wrote:

> On 09/07/2007 21.23, Walter Dörwald wrote:
> 
>>  >>> from ll.xist import parsers, xfind
>>  >>> from ll.xist.ns import html
>>  >>> e = parsers.parseURL("http://www.python.org";, tidy=True)
>>  >>> print e.walknode(html.h2 & xfind.hasclass("news"))[-1]
>> Google Adds Python Support to Google Calendar Developer's Guide
>>
>>
>> Get the first comment line from a python file:
>>
>>  >>> getitem((line for line in open("Lib/codecs.py") if 
>> line.startswith("#")), 0)
>> '### Registry and builtin stateless codec functions\n'
>>
>>
>> Create a new unused identifier:
>>
>>  >>> def candidates(base):
>> ...     yield base
>> ...     for suffix in count(2):
>> ...         yield "%s%d" % (base, suffix)
>> ...
>>  >>> usedids = set(("foo", "bar"))
>>  >>> getitem((i for i in candidates("foo") if i not in usedids), 0)
>> 'foo2'
> 
> You keep posting examples where you call your getitem() function with "0" as 
> index, or -1.
> 
> getitem(it, 0) already exists and it's spelled it.next(). getitem(it, -1) 
> might be useful in fact, and it might be spelled last(it) (or it.last()). 
> Then 
> one may want to add first() for simmetry, but that's it:
> 
> first(i for i in candidates("foo") if i not in usedids)
> last(line for line in open("Lib/codecs.py") if line[0] == '#')
> 
> Are there real-world use cases for getitem(it, n) with n not in (0, -1)? I 
> share Raymond's feelings on this. And by the way, if you wonder, I have these 
> exact feelings as well for islice... :)

It useful for screen scraping HTML. Suppose you have the following HTML 
table:

<table>
<tr><td>01.01.2007</td><td>12.34</td><td>Foo</td></tr>
<tr><td>13.01.2007</td><td>23.45</td><td>Bar</td></tr>
<tr><td>04.02.2007</td><td>45.56</td><td>Baz</td></tr>
<tr><td>27.02.2007</td><td>56.78</td><td>Spam</td></tr>
<tr><td>17.03.2007</td><td>67.89</td><td>Eggs</td></tr>
<tr><td>          </td><td>164.51</td><td>Total</td></tr>
<tr><td>          </td><td>(incl. VAT)</td><td></td></tr>
</table>

To extract the total sum, you want the second column from the second to 
last row, i.e. something like:
    row = getitem((r for r in table if r.name == "tr"), -2)
    col = getitem((c for c in row if c.name == "td"), 1)

Servus,
    Walter
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to