我正在使用csv
python包来读取这样的csv文件:
r = csv.DictReader(open(r'd:\aaa.csv', 'rb'))
for row in r:
print row
问题是结果字典中的所有值都是字符串,我需要将它们转换为相应的类型。我在列名和类型之间有一个映射。
这里有快捷方式,还是我必须自己完成所有这些快捷方式?
修改
我已将https://stackoverflow.com/a/9720733/80002标记为答案。只是,我稍微修改了它。如果我要对它进行后处理,没有必要使用DictReader
,所以这是我对Sven代码的修改:
r = csv.reader(open(r'd:\aaa.csv', 'rb'))
header = r.next()
converters = [converters_map[c] for c in header]
for row in r:
row = {title:converter(value) for title, converter, value in zip(header, converters, row)}
print row
答案 0 :(得分:4)
如果您有将字符串转换为相应类型的转换器函数字典,那么您只需要
with open("d:/aaa.csv", "rb") as input_file:
reader = csv.DictReader(input_file)
for row in reader:
row = {k: converters[k](v) for k, v in row.items()}
print row
(Python 2.7。对于早期版本,使用dict()
而不是字典理解。)
您可以将此代码包装在生成器函数中(只需使用yield row
而不是print row
)。