On 11/21/11 09:16, ray wrote:
Is there a way to capture the keys outside of the for loop so
when the for loop is entered, only data is extracted?
I frequently do this for things like tweaking headers (stripping
space, normalizing case, etc because clients love to send us
messy data):
def norm_header(h):
return h.strip().upper()
def norm_item(i):
return i.strip()
f = file("example.csv", "rb")
try:
r = csv.reader(f)
headers = r.next()
header_map = dict(
(norm_header(h), i)
for i, h in enumerate(headers)
)
for row in r:
item = lambda h: norm_item(row[header_map[norm_header(h)]])
value1 = item("Item1")
value2 = item("ITEM3")
...
finally:
f.close()
Should work in 2.x, possibly in 3.x (though you might need to
change from "headers = r.next()" to "headers = next(r)")
-tkc
--
http://mail.python.org/mailman/listinfo/python-list