我想将csv文件读取到我的Tkinter应用程序中,并将文件的内容拆分为不同的小部件。我能够读取第一列的文本并将其输入到正确的输入小部件中,但无法继续。我收到“ KeyError:”异常。
我的示例代码只是一个隔离的块,用于查看我是否可以打印文件内容:
import csv
with open("bible.csv", mode="r") as file:
csv_reader = csv.DictReader(file)
for row in csv_reader:
x = row["title"]
y = row["author"]
z = row["year"]
错误消息是:
Bible Traceback (most recent call last): File "C:/Users/", line 23, in <module> y = row['author'] KeyError: 'author'
CSV内容就是这样:
title, author, year, others, note
Bible,Many,0,Religion,This is the bible.
有人可以解释为什么它只占用第一个“行”而不继续吗?
非常感谢您的参与!
答案 0 :(得分:2)
正在读取标头及其初始空格,因此键是" author"
而不是"author"
。您可以将skipinitialspace
格式参数设置为True
,以防止出现这种情况
import csv
with open("bible.csv", mode="r") as file:
csv_reader = csv.DictReader(file, skipinitialspace=True)
for row in csv_reader:
x = row["title"]
print(x)
y = row['author']
z = row["year"]
答案 1 :(得分:1)
错误KeyError: 'author'
表示密钥"author"
在row
中不存在。果然,如果我们添加print(row)
,我们将看到:
OrderedDict([('title', 'Bible'), (' author', 'Many'), (' year', '0'), (' others', 'Religion'), (' note', 'This is the bible.')])
因此密钥实际上是" author"
而不是"author"
。 Patrick Haugh在回答中提供了解决方法。