繁体   English   中英

读取csv到python的问题(DictReader)

[英]Problem with reading csv to python(DictReader)

我想将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,但我不知道它们是什么以及如何从中读取,如何获取单个行甚至是元组中的名称。

每行都按照自己的OrderedDict返回,如文档中所述

您需要将这些中的每一个存储在某个地方以便访问它们或逐行处理。

您可以这样访问它们(来自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 print(row['column_name'])将它们嵌套到另一个字典中:

>>> 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM