在python 2.7中使用smtp时发生keyerror

时间:2018-11-25 08:39:07

标签: python python-2.7 dictionary keyerror

for row in csv_reader:
    username = row ["Username"]
    pwd = row ["Password"]
    email = row["Username"]
    grades = row["Grades"]
    comments = row["Comments"]

**我的错误是:用户名=行[“用户名”]

KeyError: 'Username'**

2 个答案:

答案 0 :(得分:0)

我认为,名为row的值可能不包含Username键。 您可以通过print(row)print(csv_reader)检查所有密钥。

确保csv_reader是一个包含字典和Username键的列表。 看起来像这样:

csv_reader = [{"Username": "McCree", "Password": "Secret", "Grades": "100" ...}]

答案 1 :(得分:0)

假设我有一个csv文件,其中包含以下数据:

用户名,密码,电子邮件

John Smith,Pass!12,abc @ email.com

现在我可以通过以下方式读取此csv文件:第一个使用 csv.reader(),而另一个使用 csv.DictReader()

  • csv.reader():

    import csv
    
    with open('filename') as csv_file:
        csv_reader = csv.reader(csv_file, delimiter=',')
        for row in csv_reader:
            #now we assign the username
            #username = row['usename']---this will give an error here
            username = row[0]     #this will assign the value at index 0 of row to username
    

由于行是一个列表,我们必须通过那里的索引来访问值。

  • csv.DictReader()

        import csv
        with open('file_name', mode='r') as csv_file:
            csv_reader = csv.DictReader(csv_file)
            for row in csv_reader:
                #now we assign the username
                username = row.get('username')
    

作为 csv.DictReader()函数转换字典中的csv文件数据。因此,我们必须使用它的键来获取特定的值:-例如,我们使用 row.get('username')来实现。