【问题标题】:keyerror while using smtp in python 2.7在 python 2.7 中使用 smtp 时出现 keyerror
【发布时间】:2019-04-27 04:47:42
【问题描述】:
for row in csv_reader:
    username = row ["Username"]
    pwd = row ["Password"]
    email = row["Username"]
    grades = row["Grades"]
    comments = row["Comments"]

**我的错误是:username = row ["Username"]

KeyError: 'Username'**

【问题讨论】:

  • 你能分享print csv_reader的输出吗?结果可能是缺少以下键
  • 输入您的电子邮件:输入密码:上传 excel 文件上传发送邮件的文本格式打开 SMTP 会话回溯(最近一次调用最后):文件“Emailcode.py”,第 76 行,在 用户名中= row['username'] KeyError: 'username'
  • @satwik 尝试通过编辑将此代码的其余部分添加到您的问题中,因为此处提供的信息不足以找到问题的根源。它只向我们表明,在结果字典中没有与 Username 对应的键

标签: python python-2.7 dictionary keyerror


【解决方案1】:

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

用户名、密码、电子邮件

约翰·史密斯,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
    

因为 row 是一个列表,我们必须通过那里的索引访问值。

  • 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') 来做这个。

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-18
      • 2013-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      相关资源
      最近更新 更多