On 09/10/11 14:36, Terry Reedy wrote:
1. Process first item of an iterable separately.
A traditional solution is a flag variable that is tested for each item.
first = True
<other setup>
for item in iterable:
if first:
<process first>
first = False
else:
<process non-first>
(I have seen code like this posted on this list several times, including
today.)
Better, to me, is to remove the first item *before* the loop.
items = iter(iterable)
<set up with next(items)
for item in items:
<process non-first>
I like to use this one for processing CSV files where I need to
clean up the headers:
r = csv.reader(f)
headers = r.next()
header_map = dict(
(header.strip().upper(), i)
for i, header
in enumerate(headers)
)
for row in r:
item = lambda s: row[header_map[s]].strip()
thing = item("THING")
whatever = item("WHATEVER")
It's mostly like a DictReader, but it isn't as sensitive to the
spaces/capitalization that clients love to mess with.
-tkc
--
http://mail.python.org/mailman/listinfo/python-list