2015-07-16 5 views
0

У меня есть файл с кодировкой latin1. Как сделать следующий код с csv?Кодирование csvreader

>>> import csv 
>>> with open(filepath, 'rb') as csvfile: 
...  reader = csv.DictReader(csvfile, delimiter='\t', encoding='iso-8859-1') 
+0

ли вы имеете в виду 'кодирование = 'латино-1''? Извините, я не вижу трудности ... – Basic

+0

@Basic 'csv'.'DictReader' не позволяет устанавливать кодировку в качестве параметра. – David542

+0

А, ок. Вам нужно будет сделать что-то вроде [this] (http://stackoverflow.com/a/5005573/156755) – Basic

ответ

0

Вот как вы можете это сделать:

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') 
2
with open(filepath, "r", encoding="ISO-8859-1") as csvfile: 
    reader = csv.DictReader(csvfile) 
+0

Это действительно не сработало, когда я попробовал. Также, я думаю, вы имеете в виду 'codes.open'? – David542

Смежные вопросы