2017-09-14 2 views
-4

Salut J'ai un fichier csv délimité par une virgule comme ceci. Je veux extraire toutes les adresses email du champ email en utilisant le module csv en python. Et à partir de chaque adresse e-mail écrire une ligne en utilisant les autres domaines comme celui-cicomment lire plusieurs valeurs d'un champ dans un fichier csv en utilisant python 3

name, email1, etc, telephone 
name, Email2, etc, telephone 
name, email3, etc, telephone 

Peut-être que je dois lire le champ e-mail et le diviser dans les chaînes séparées?

+2

Oui vous faites peut-être. Implémentez-le et posez une question si vous rencontrez un problème. – pvg

Répondre

0

Créez un lecteur CSV et un écrivain, et comme vous l'avez dit, lisez le fichier à l'aide du séparateur standard ,, puis divisez le champ de courrier électronique manuellement en utilisant ;. Pour chaque entrée e-mail, écrivez les autres champs:

import csv 

with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output: 
    csv_input = csv.reader(f_input) 
    csv_output = csv.writer(f_output) 

    for row in csv_input: 
     emails = row[1].split(';') 
     for email in emails: 
      csv_output.writerow([row[0], email] + row[3:]) 

Ou un peu plus compact:

import csv 

with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output: 
    csv_output = csv.writer(f_output) 

    for row in csv.reader(f_input): 
     csv_output.writerows([row[0], email] + row[3:] for email in row[1].split(';')) 

testé en utilisant Python 3.x

+0

merci beaucoup. Je gagne du python. –