如何最佳地读取包含标题行的数据文件并将其读入命名元组,以便可以通过标题名称访问数据行?
我尝试了类似于这样的代码:
import csv
from collections import namedtuple
with open('data_file.txt', mode="r") as infile:
reader = csv.reader(infile)
Data = namedtuple("Data", ", ".join(i for i in reader[0]))
next(reader)
for row in reader:
data = Data(*row)
reader对象不可下标索引,所以上述代码会引发TypeError
。如何以Pythonic方式将文件头读入namedtuple中?
for data in map(Data._make, reader):
。 - martineaumode="rb"
,而在Python 3中需要newline=""
。 - Sven Marnachnewline=""
只对一些旧版本的 Python 3 有用,这些版本在每行后插入一个空白行(对于最新的 2.7 版本也是如此,其中"rb"
不是必需的。请查看我的问答:https://dev59.com/ZlkT5IYBdhLWcg3wStof 并自行测试。open("data_file.txt")
(读取时)适用于任何版本的 Python。写入则是另一回事,但在较新的 2 或 3 分支中似乎没有 newline 或 wb 也可以正常工作。 - Jean-François Fabreb
有所不同的平台,并且我认为这是不必要的。最新的Python 2和Python 3文档中都说明了csv
模块的这些要求,因此即使您发现它在某些平台上对某些输入有效,您仍然以未记录的方式使用API,这可能会随时中断。 - Sven Marnach