web-dev-qa-db-fra.com

Comment utiliser le délimiteur pour CSV dans python

J'ai du mal à trouver comment utiliser le délimiteur pour csv.writer en Python. J'ai un fichier csv dans lequel les chaînes séparées par des virgules sont dans une seule cellule et j'ai besoin d'avoir chaque mot dans chaque cellule individuelle. Par exemple:

   100 , 2559   ,,Main, St,LEOMA,LEOMA,498,498, AK,AK
   140 , 425    ,,Main, St,LEOMA,LEOMA,498,498, AK,AK
   100 , 599    ,,Main, St,LEOMA,LEOMA,498,498, AK,AK

devrait être

   100  2559        Main    St  LEOMA   LEOMA   498 498 AK  AK
   140  425     Main    St  LEOMA   LEOMA   498 498 AK  AK
   100  599     Main    St  LEOMA   LEOMA   498 498 AK  AK

(chaque mot dans une cellule individuelle).

J'ai essayé:

import csv
workingdir = "C:\Mer\Ven\sample"
csvfile = workingdir+"\test3.csv"
f=open(csvfile,'wb')

csv.writer(f, delimiter =' ',quotechar =',',quoting=csv.QUOTE_MINIMAL)
20
hydi

Votre code efface votre fichier:

import csv
workingdir = "C:\Mer\Ven\sample"
csvfile = workingdir+"\test3.csv"
f=open(csvfile,'wb') # opens file for writing (erases contents)
csv.writer(f, delimiter =' ',quotechar =',',quoting=csv.QUOTE_MINIMAL)

si vous voulez lire le fichier, vous devrez utiliser csv.reader et ouvrir le fichier pour le lire.

import csv
workingdir = "C:\Mer\Ven\sample"
csvfile = workingdir+"\test3.csv"
f=open(csvfile,'rb') # opens file for reading
reader = csv.reader(f)
for line in reader:
    print line

Si vous souhaitez le réécrire dans un nouveau fichier avec différents délimiteurs, vous pouvez créer un nouveau fichier et spécifier ces délimiteurs et écrire chaque ligne (au lieu d'imprimer le tuple).

20
underrun

ok, voici ce que j'ai compris de votre question. Vous écrivez un fichier csv à partir de python mais lorsque vous ouvrez ce fichier dans une autre application comme Excel ou Open Office, ils affichent la ligne complète dans une cellule plutôt que chaque mot dans une cellule individuelle. J'ai raison??

si je le suis, essayez ceci,

import csv

with open(r"C:\\test.csv", "wb") as csv_file:
    writer = csv.writer(csv_file, delimiter =",",quoting=csv.QUOTE_MINIMAL)
    writer.writerow(["a","b"])

vous devez définir le delimiter = ","

3
abhishekgarg