2015-09-24 5 views
0

Получил слово «Zápas» с одной веб-страницы, которую я сфотографировал. Проблема в том, что ближайшая версия в моих данных выглядит так: Z \ xe1pas после кодирования Windows-1250. Без этой str (a) были некоторые ошибки ANSI. Благодарим вас за помощь.кодировка словацких букв: á š Č é

моя попытка:

def encode(text): 
    return text.encode('windows-1250')... 
... 
for cell in row.findAll(['td', 'th']): 
    cell=encode(cell.get_text().strip()) 
    a.append(cell) 
foo.write(str(a)+"\n") 
+0

Почему вы кодируете вручную вместо того, чтобы «foo» обрабатывать его? –

+1

Для чего-либо, связанного с unicode, очень важно указать Python 2 или Python 3 в вопросе и (желательно) тег. – nigel222

ответ

1

Наверно a строка на самом деле строка Юникода. Чтобы записать его в поток байтов, вы должны закодировать его в байтовой строке в указанной кодировке, windows-1250 в вашем случае, utf-8 в моем. Просто используйте a.encode(<encoding>) before sending result to the foo.write() `:

foo.write(a.encode("utf-8")) 

Кроме того, я бы обрабатывать все данные в unicode преобразования в строку байтов непосредственно перед отправкой данных«снаружи»(в файл на удаленный пункт назначения, и т.д.)