简体   繁体   English

从CSV文件中以字典形式读取并将其添加到列表中

[英]Read from CSV file as dictionary and append it into a list

I get the data in to my dicts from the input() method and write the dicts in to a one list. 我从input()方法获取数据到我的字典中,然后将字典写入一个列表中。 Now I want to read from a CSV file the datas row for row as a dictionary and save this dictionaries in to the list. 现在,我想从CSV文件中逐行读取数据作为字典,并将此字典保存到列表中。

kontaktbuch = []

kontakt = {'Anrede': anrede,'Vorname': vorname_kontakt, 'Nachname': nachname_kontakt, 'Strasse': strasse, 'Hausnummer': hausnummer, 'PLZ': plz, 'Stadt' : stadt, 'Telefon1': telefon1, 'Telefon2': telefon2, 'E-Mail': email}

kontaktbuch.append(kontakt)

Now I add this method in to my code: 现在,我将此方法添加到我的代码中:

def import_csv():
    with open('list.csv') as csvfile:

       reader = csv.DictReader(csvfile,delimiter=",")

       kontaktbuch.append(list(reader))

The CSV file content: CSV文件内容:

Anrede,Vorname,Nachname,Strasse,Hausnummer,PLZ,Stadt,Telefon1,Telefon2,E-Mail
213,213,2323,2323,2323,23232,323232,23232,32323,2313
sadsad,sadad,adada,dsadasada,sadadsa,sadsada,sadsad,sadsad,asaas,ds

But this code put all of the dictorinaries in to one index at the list: 但是,此代码将所有dictorinaries放在列表的一个索引中:

[(0, [{'Strasse': '2323', 'Stadt': '323232', 'Nachname': '2323', 'Telefon1': '23232', 'PLZ': '23232', 'Anrede': '213', 'Telefon2': '32323', 'Hausnummer': '2323', 'E-Mail': '2313', 'Vorname': '213'}, {'Strasse': 'dsadasada', 'Stadt': 'sadsad', 'Nachname': 'adada', 'Telefon1': 'sadsad', 'PLZ': 'sadsada', 'Anrede': 'sadsad', 'Telefon2': 'asaas', 'Hausnummer': 'sadadsa', 'E-Mail': 'ds', 'Vorname': 'sadad'}]), (1, [{'Strasse': '2323', 'Stadt': '323232', 'Nachname': '2323', 'Telefon1': '23232', 'PLZ': '23232', 'Anrede': '213', 'Telefon2': '32323', 'Hausnummer': '2323', 'E-Mail': '2313', 'Vorname': '213'}, {'Strasse': 'dsadasada', 'Stadt': 'sadsad', 'Nachname': 'adada', 'Telefon1': 'sadsad', 'PLZ': 'sadsada', 'Anrede': 'sadsad', 'Telefon2': 'asaas', 'Hausnummer': 'sadadsa', 'E-Mail': 'ds', 'Vorname': 'sadad'}])]

With wich method can I write a dict only to a one index at the list? 使用wich方法,我可以只将字典写到列表中的一个索引吗?

Full example: 完整示例:

import csv
import io

s = u"""Anrede,Vorname,Nachname,Strasse,Hausnummer,PLZ,Stadt,Telefon1,Telefon2,E-Mail
213,213,2323,2323,2323,23232,323232,23232,32323,2313
sadsad,sadad,adada,dsadasada,sadadsa,sadsada,sadsad,sadsad,asaas,ds"""

kontaktbuch = []

reader = csv.DictReader(io.StringIO(s),delimiter=",")

for row in reader:
    kontaktbuch.append(row)

# or
# kontaktbuch.extend(reader) suggested by  juanpa.arrivillaga

or using pandas: 使用熊猫:

import pandas as pd
import io

s = u"""Anrede,Vorname,Nachname,Strasse,Hausnummer,PLZ,Stadt,Telefon1,Telefon2,E-Mail
213,213,2323,2323,2323,23232,323232,23232,32323,2313
sadsad,sadad,adada,dsadasada,sadadsa,sadsada,sadsad,sadsad,asaas,ds"""

kontaktbuch = pd.read_csv(io.StringIO(s)).to_dict("r")

kontaktbuch return: kontaktbuch返回:

[{'Anrede': '213',
  'E-Mail': '2313',
  'Hausnummer': '2323',
  'Nachname': '2323',
  'PLZ': '23232',
  'Stadt': '323232',
  'Strasse': '2323',
  'Telefon1': '23232',
  'Telefon2': '32323',
  'Vorname': '213'},
 {'Anrede': 'sadsad',
  'E-Mail': 'ds',
  'Hausnummer': 'sadadsa',
  'Nachname': 'adada',
  'PLZ': 'sadsada',
  'Stadt': 'sadsad',
  'Strasse': 'dsadasada',
  'Telefon1': 'sadsad',
  'Telefon2': 'asaas',
  'Vorname': 'sadad'}]

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

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