通常,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()参数传递给fieldnamesDictReader构造函数不会重置文件,因此您不必担心解析后在头列表中读取它。

10-06 13:19