python – 使用DictReader从CSV读入列表
作者:互联网
代码:
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
我找不到解决方案,为什么我的输出与此问题相同:Convert a csv.DictReader object to a list of dictionaries?
我想将行作为dict读取,标题信息作为键,然后将所有这些作为列表保存在一起.
解决方法:
那是因为他们改变了python 3.6中csv.DictReader的实现.这个新实现的有趣之处在于键是按照标题排序的,并且它由OrderedDict对象保证(即使在Python 3.6中,所有dicts都是有序的,但这被视为实现细节,因此csv模块不依赖于它)
以前你的代码返回了一个字典列表,现在它返回一个列表或有序的字典,这是一个专业化.
你担心数据的表示,但它会工作正常,它们仍然是字典(例如打印(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’, ‘E-Mail’: ‘sdf’}, {‘Anrede’: ‘123123’, ‘Vorname’: ‘213213’, ‘Nachname’: ‘213123’, ‘Strasse’: ‘123213’, ‘Hausnummer’: ‘12312’, ‘PLZ’: ‘21323’, ‘Stadt’: ’23’, ‘Telefon1′: ’23’, ‘Telefon2′: ’23’, ‘E-Mail’: ‘2’}]
就像你在早期版本的python上运行代码一样.
标签:python,dictionary,csv,python-3-6 来源: https://codeday.me/bug/20190722/1500809.html