在 Python 中获取 DictReader 标题的特殊情况

Hou*_*ini 4 python csv data-structures python-3.x

通常,csv.DictReader将使用 .csv 文件的第一行作为列标题,即字典的键:

If the fieldnames parameter is omitted, the values in the first row of the csvfile will be used as the fieldnames.
Run Code Online (Sandbox Code Playgroud)

然而,我的第一行面临着这样的情况:

#Format: header1 header2 header3...ETC。

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

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

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

  1. 有很多栏目

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

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

JAB*_*JAB 7

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