csv.DictReader产生意想不到的结果

2024-03-28 13:33:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我的CSV文件:

website, username, password
google.com, test1, lamepass
instagram.com, test2, passlame

我的python脚本:

^{pr2}$

返回:

google.com
instagram.com

但是这个代码:

with open(database_path) as database:
    csv_read = csv.DictReader(database)
    for card in csv_read:
        print(card['password'])

退货:

KeyError: 'password'

我不明白这个问题,在线资源只是展示了一些例子,没有一个能解释这个问题。它们确实讨论了KeyErrors,但似乎没有说明CSV文件如何包含密钥('password'),但仍然返回key error。在

我做错什么了吗?在


Tags: 文件csvcomreadgoogleusernamepasswordwebsite
2条回答

password(和username)之前有一个额外的空格:

csv = """website, username, password
google.com, test1, lamepass
instagram.com, test2, passlame"""

with open('file.csv', 'w+') as f:
    f.write(csv)

import csv

with open('file.csv', 'r+') as database:
    csv_read = csv.DictReader(database)
    for card in csv_read:
        print(card)


OrderedDict([('website', 'google.com'), (' username', ' test1'), (' password', ' lamepass')])
OrderedDict([('website', 'instagram.com'), (' username', ' test2'), (' password', ' passlame')])

您应该尝试使用以下命令从csv中删除多余的空格:

^{pr2}$

在csv文件中,逗号分隔的值之间有空格。移除它们,它应该可以工作。在

否则请尝试以下操作:

import csv

with open(database_path) as database:
    csv_read = csv.DictReader(database)

    for card in csv_read:
        print(card[" password"]) # notice the space!!!

相关问题 更多 >