J'ai un fichier encodé latin1. Comment pourrais-je faire l'équivalent de ce qui suit avec csv?

>>> import csv
>>> with open(filepath, 'rb') as csvfile:
...     reader = csv.DictReader(csvfile, delimiter='\t', encoding='iso-8859-1')
0
David542 16 juil. 2015 à 04:59

2 réponses

Meilleure réponse

Voici une façon de le faire:

def Latin1ToUnicodeDictReader(latin1_data, **kwargs):
    csv_reader = csv.DictReader(latin1_data, **kwargs)
    for row in csv_reader:
        yield {key: value.decode('iso-8859-1').encode('utf8') if value else value for key, value in row.iteritems()}

reader = Latin1ToUnicodeDictReader(csvfile, delimiter='\t')
1
David542 16 juil. 2015 à 03:04
with open(filepath, "r", encoding="ISO-8859-1") as csvfile:
    reader = csv.DictReader(csvfile)
3
verygoodsoftwarenotvirus 16 juil. 2015 à 03:10