我尝试使用csv.DictReader
读取Python中的csv文件,我需要处理这两种情况:
1.当标题出现在第一行时:
col1,col2
foo,bar
1.当省略时:
foo,bar
我可以假设头文件总是col1,col2
,如果它们被提供的话。我尝试使用fieldnames
参数,但是当它们出现时,头文件被当作值处理:
reader = csv.DictReader(csv_file, fieldnames=['col1','col2'])
print(list(reader))
输出:
[{'col1': 'col1', 'col2': 'col2'}, {'col1': 'foo', 'col2': 'bar'}]
而不是:
[{'col1': 'foo', 'col2': 'bar'}]
使用不带fieldnames
参数的csv.DictReader
可以在有标头的情况下工作,但在没有标头的情况下返回空列表。
2条答案
按热度按时间ttisahbt1#
您可以阅读第一行,如果它与预期的头不同,则通过
seek()
返回到文件的开头给定“in1.csv”
给定“in2.csv”
然后
应给予您:
ars1skjm2#
您可以使用DictReader并向其提供您最终想要的字段名(以处理隐式无标头情况),然后处理显式情况,即有标头但现在需要跳过它:
对于这两个文件:
打印: