通常是 csv.DictReader
将使用 .csv 文件的第一行作为列标题,即字典的键:
If the fieldnames parameter is omitted, the values in the first row of the csvfile will be used as the fieldnames.
但是,我的第一行遇到了这样的问题:
#Format: header1 header2 header3
...等等
需要跳过 #Format:
,因为它不是列标题。我可以做类似的事情:
column_headers = ['header1', 'header2', 'header3']
reader = csv.dictReader(my_file, delimiter='\t', fieldnames=column_headers)
但出于两个原因,我宁愿让 DictReader 处理这个问题。
有很多列
列名可能会随时间变化,这是一个季度运行的过程。
有没有办法让 DictReader 仍然使用第一行作为列标题,但跳过第一个 #Format:
词?或者实际上任何以 #
开头的单词都可能就足够了。
最佳答案
当 DictReader
包装一个打开的文件时,您可以读取文件的第一行,从那里解析标题 (headers = my_file.readline().split(delimiter)[1 :]
,或类似的东西),然后将它们作为 fieldnames
参数传递给 DictReader()
。 DictReader
构造函数不会重置文件,因此您不必担心它会在解析后读取标题列表。
关于python - 在 Python 中获取 DictReader 标题的特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282492/