J'essaye de charger un fichier .csv avec le format de texte utf-8 et de l'écrire dans un format cp1252 (ansi) avec des délimiteurs de tuyaux. Le code suivant fonctionne dans Python 3.6 mais j'en ai besoin pour travailler dans Python 2.6. Cependant, la fonction 'open' n'autorise pas un mot-clé d'encodage dans Python 2.6.Impossible de convertir csv de utf-8 en ansi avec csv writer python 2.6
import datetime
import csv
# Define what filenames to read
filenames = ["FILE1","FILE2"]
infilenames = [filename+".csv" for filename in filenames]
outfilenames = [filename+"_out_.csv" for filename in filenames]
# Read filenames in utf-8 and write them in cp1252
for infilename,outfilename in zip(infilenames,outfilenames):
infile = open(infilename, "rt",encoding="utf8")
reader = csv.reader(infile,delimiter=',',quotechar='"',quoting=csv.QUOTE_MINIMAL)
outfile = open(outfilename, "wt",encoding="cp1252")
writer = csv.writer(outfile, delimiter='|', quotechar='"', quoting=csv.QUOTE_NONE,escapechar='\\')
for row in reader:
writer.writerow(row)
infile.close()
outfile.close()
J'ai essayé plusieurs solutions:
- ne définit pas l'encodage. Résultats erronés sur certains caractères Unicode
- Utilisez la bibliothèque io (io.open au lieu d'ouvrir). Résultats dans "Erreur de type: impossible d'écrire str en texte dans le flux de texte".
Est-ce que quelqu'un connaît la bonne solution pour cela dans Python 2.X?
Python 'la csv' de 2 n'aime pas' chaînes unicode', donc il n'y a pas de solution facile dans la bibliothèque standard. Cependant, il existe des solutions tierces. Consultez les réponses à [cette question] (https://stackoverflow.com/questions/904041/reading-a-utf8-csv-file-with-python), par exemple. – lenz