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 处理这个问题有两个原因。
有很多栏目
列名称可能会随着时间的推移而改变,这是一个每季度运行的过程。
有没有办法让 DictReader 仍然使用第一行作为列标题,但跳过第一个#Format:
单词?或者实际上任何以 a 开头的单词都#
可能就足够了。
当DictReader
包装打开的文件时,您可以读取文件的第一行,从那里解析标头(headers = my_file.readline().split(delimiter)[1:]
或类似的东西),然后将它们作为DictReader()
参数传递fieldnames
。构造DictReader
函数不会重置文件,因此在解析该文件后,您不必担心它会在标头列表中读取。