2

通常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...ETC。

#Format:需要跳过,因为它不是列标题。我可以做类似的事情:

column_headers = ['header1', 'header2', 'header3']
reader = csv.dictReader(my_file, delimiter='\t', fieldnames=column_headers)

但出于两个原因,我宁愿让 DictReader 处理这个问题。

  1. 有很多列

  2. 列名可能会随着时间而改变,这是一个季度运行的过程。

有没有办法让 DictReader 仍然使用第一行作为列标题,但跳过第一个#Format:单词?或者实际上任何以 a 开头的词#都可能就足够了。

4

1 回答 1

4

DictReader包装一个打开的文件,您可以读取文件的第一行,从那里解析标题(或headers = my_file.readline().split(delimiter)[1:]类似的东西),然后将它们DictReader()作为fieldnames参数传递给。构造DictReader函数不会重置文件,因此您不必担心在解析后它会在标题列表中读取。

于 2013-06-24T18:50:03.710 回答