通常,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:]
或类似的东西),然后将它们作为DictReader()
参数传递给fieldnames
。 DictReader
构造函数不会重置文件,因此您不必担心解析后在头列表中读取它。