将csv读入python时出现问题(DictReader)

2024-06-01 14:48:54 发布

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

我想将csv文件的内容放入python词典中。我需要在python中将它们与类中的函数一起使用,所以我必须从字典中找到个人。我只需要读取csv文件一次,将它们放入单独的字典中,然后从那里开始。我得到了这个代码,但我不知道如何使用它; 导入csv

file = 'FakeNameSet.csv'
with open(file,  encoding = 'utf-8-sig') as csvfile:
    Customer_list = csv.DictReader(csvfile)
    for row in Customer_list:
        print(row)

fakenameset.csv是一个格式如下的文件

Number,Gender,NameSet,GivenName,Surname,StreetAddress,ZipCode,City,EmailAddress,Username,TelephoneNumber
1,male,Dutch,Hisham,Altink,"Borkelsedijk 53","5571 GA",Bergeijk,HishamAltink@teleworm.us,Reech1950,06-16898224
2,female,Dutch,Maren,Breider,"Van Humboldtstraat 130","3514 GS",Utrecht,MarenBreider@dayrep.com,Othed1997,06-23093526
3,male,Dutch,Hayati,"van Dekken","Schorweg 101","5993 PC",Maasbree,HayativanDekken@teleworm.us,Drem1996,06-74004784

上面的代码给出了这个输出

OrderedDict([('Number', '1'), ('Gender', 'male'), ('NameSet', 'Dutch'), ('GivenName', 'Hisham'), ('Surname', 'Altink'), ('StreetAddress', 'Borkelsedijk 53'), ('ZipCode', '5571 GA'), ('City', 'Bergeijk'), ('EmailAddress', 'HishamAltink@teleworm.us'), ('Username', 'Reech1950'), ('TelephoneNumber', '06-16898224')])

它返回OrderedDict,但我不知道它们是什么,也不知道如何从中读取,如何从元组中获取单独的行,甚至是名称


Tags: 文件csvcsvfile代码number字典customergender
1条回答
网友
1楼 · 发布于 2024-06-01 14:48:54

每一行都将作为自己的OrderedDict作为described in the docs返回

您需要将它们存储在某个位置,以便访问它们或逐行处理

您可以这样访问它们(从文档):

>>> import csv
>>> with open('names.csv', newline='') as csvfile:
...     reader = csv.DictReader(csvfile)
...     for row in reader:
...         print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese

>>> print(row)
OrderedDict([('first_name', 'John'), ('last_name', 'Cleese')])

因此,您可以逐行执行您想执行的操作,而不是print(row['column_name']),或者您可以将它们存储到列表中,或者通过“主键”将它们嵌套到另一个字典中,例如您的示例中的number

>>> import csv
>>> data = {}
>>> with open('names.csv', newline='') as csvfile:
...     reader = csv.DictReader(csvfile)
...     for row in reader:
...         data[row['Number']] = row
>>> data[1]['GivenName']
Hisham

相关问题 更多 >