2017-10-20 57 views
1

J'ai un scénario simple où je change le délimiteur dans un fichier CSV de ; (point-virgule) à , (virgule). Voici le codeConversion d'un délimiteur d'un point-virgule en virgule dans un fichier CSV?

code:

import csv 
semicolonin = csv.reader(r"C:\pyscripts\1.csv", delimiter=';') 
commaout = csv.writer(r"C:\pyscripts\1.csv", delimiter=',') 
for row in semicolonin: 
    commaout.writerow(row) 

Mais je reçois une erreur. Est-ce que je manque quelque chose? Pendant l'exécution de la ligne commaout = csv.writer(r"C:\pyscripts\1.csv", delimiter=',').

+3

Vous avez passé un chemin de fichier au lieu d'un objet fichier. 'csv.reader (open (r" C: \ pyscripts \ 1.csv "), delimiter = ';')' –

+0

Vous voulez utiliser un nom de fichier différent pour la sortie que l'entrée. Sauf si la perte de toutes les données est votre objectif. –

Répondre

1

Vous devez fournir un objet de fichier à la méthode de l'écrivain, comme ceci:

import csv 
with open(r"C:\pyscripts\1.csv") as in_file, open(r"C:\pyscripts\1.csv", 'w') as out_file: 
    semicolonin = csv.reader(in_file, delimiter=';') 
    commaout = csv.writer(out_file, delimiter=',') 
    for row in semicolonin: 
     commaout.writerow(row) 
+0

ci-dessus code seulement le nom du chemin d'accès dans le fichier csv et rien d'autre. – Alex

+0

A droite, même problème qu'avec l'écrivain. vous devez donner l'objet fichier à csv.reader et pas seulement le chemin. – Lumen

+0

Alors, quelle est la solution ici? – Alex