【发布时间】:2017-10-04 21:49:07
【问题描述】:
您好,我正在尝试打开带有外部文件标头的简单 csv 文件:
得到下一个文件名为:name.csv,下一个内容:
Leo,Days,Ju
Tomas,Lee,Bruce
Max,Perez,Smith
如果我编码:
import csv
sep = ','
with open('name.csv') as csvfile:
fieldnames = ['name', 'paterno', 'materno']
reader = csv.DictReader(csvfile,fieldnames)
for row in reader:
list = (row['name'], \
row['materno'])
print (sep.join(list))
想要的结果如下:
Leo,Ju
Tomas,Bruce
Max,Smith
但如果有一个额外的文件,其标题名为 hdr_name.txt 与:
['name', 'paterno', 'materno']
有了这个新代码:
import csv
sep = ','
fieldnames = open('hdr_name.txt', 'r').read()
with open('name.csv') as csvfile:
print(fieldnames)
reader = csv.DictReader(csvfile,fieldnames)
for row in reader:
list = (row['name'], \
row['materno'])
print (sep.join(list))
得到结果:
Traceback (most recent call last):
File "<stdin>", line 5, in <module>
KeyError: 'name'
但如果我在字段名中询问“名称”,是否存在!
>>> 'name' in fieldnames
True
>>>
我做错了什么,从外部文件打开标题?
【问题讨论】:
-
只需阅读您的标题
fieldnames = open('hdr_name.txt', 'r').readlines() -
@AndMar 不幸的是,这并没有解决它,因为该文件包含一个带有 str'd 列表的单行。
-
是的,没错(
-
更重要的是,停止将对象的字符串表示形式转储到 txt 文件并称之为序列化 - 使用预先存在的序列化格式。