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

标签 python csv python-3.x data-structures

通常是 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 处理这个问题。

  1. 有很多列

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

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

最佳答案

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

关于python - 在 Python 中获取 DictReader 标题的特殊情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17282492/

相关文章:

java - Android 通过 OpenCsv 写入 CSV 文件

python - Pandas 中基于规则的列重命名

python - 如何将我本地的索引数据复制到另一个ip的elasticsearch

python - 如何在holoviews + bokeh中获得带有图例标签的全高垂直线?

python - SQLAlchemy 单表继承的一对多关系 - 声明式

sql-server - 将 CSV 文件导入 SQL Server 时操作停止

csv - 如何读取非UTF8编码的csv文件?

python - 如何访问 PySide2 中选中的 QCheckBox?

Python 3 - 非复制流接口(interface)到 bytearray?

Python3 将值附加到数组,但前提是它不是 None