![](/img/trans.png)
[英]Read a list from a csv row 'as a list' in python using DictReader
[英]Read from CSV into a list with DictReader
编码:
def import_csv():
with open('list.csv') as csvfile:
reader = csv.DictReader(csvfile,delimiter=",")
print(list(reader))
输出是:
[OrderedDict([('Anrede', 'asfsf'), ('Vorname', 'dsfsdfsd'), ('Nachname', 'sdfsdfdsf'), ('Strasse', 'sdfsdfsd'), ('Hausnummer', 'sdf'), ('PLZ', 'dsf'), ('Stadt', 'dsf'), ('Telefon1', 'dsf'), ('Telefon2', 'sdf'), ('E-Mail', 'sdf')]), OrderedDict([('Anrede', '123123'), ('Vorname', '213213'), ('Nachname', '213123'), ('Strasse', '123213'), ('Hausnummer', '12312'), ('PLZ', '21323'), ('Stadt', '23'), ('Telefon1', '23'), ('Telefon2', '23'), ('E-Mail', '2')])]
我的CSV文件如下:
Anrede,Vorname,Nachname,Strasse,Hausnummer,PLZ,Stadt,Telefon1,Telefon2,E-Mail
asfsf,dsfsdfsd,sdfsdfdsf,sdfsdfsd,sdf,dsf,dsf,dsf,sdf,sdf
123123,213213,213123,123213,12312,21323,23,23,23,2
我找不到解决方案,为什么我的输出与此问题相同: 将csv.DictReader对象转换为字典列表?
我想将行作为dict
读取,标题信息作为键,然后将所有这些作为列表保存在一起。
那是因为他们改变了python 3.6中csv.DictReader
的实现。 这个新实现的有趣之处在于键是按照标题排序的,并且它由OrderedDict
对象保证(即使在Python 3.6中,所有dicts都是有序的,但这被视为实现细节,因此csv
模块不依赖于它)
以前你的代码返回了一个字典列表,现在它返回一个列表或有序的字典,这是一个专业化。
你担心数据的表示,但它会工作正常,它们仍然是字典(例如print(list(reader)[0]['Anrede'])
)
只是为了让您放心,只是尝试转换为标准字典:
print([dict(d) for d in reader])
你会得到
[{'Anrede':'asfsf','Vorname':'dsfsdfsd','Nachname':'sdfsdfdsf','Strasse':'sdfsdfsd','Hausnummer':'sdf','PLZ':'dsf', 'Stadt':'dsf','Telefon1':'dsf','Telefon2':'sdf','电子邮件':'sdf'},{'Anrede':'123123','Vorname':'213213 ','Nachname':'213123','Strasse':'123213','Hausnummer':'12312','PLZ':'21323','Stadt':'23','Telefon1':'23', 'Telefon2':'23','电子邮件':'2'}]
就像你在早期版本的python上运行代码一样。
高达3.6版本,DictReader生成普通的dicts。 这改变了3.6。 这就是为什么你没有得到与你放置的链接相同的结果。 使用早期版本获取字典。 或坚持使用3.6 - OrderedDict也是很棒的数据结构。
在版本3.6中更改:返回的行现在是OrderedDict类型。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.