UnicodeEncodeError: кодек 'ascii' не может кодировать символ u '\ u2019' в позиции 126: порядковый номер не в диапазоне (128) - PullRequest
7 голосов
/ 19 декабря 2011

Хорошо, я прочитал много похожих вопросов и считаю, что правильно следую совету, но почему-то мой код все еще не работает.

Я проанализировал XML-файл. Я прочитал здесь, что вывод теперь является Unicode. Я использую CSV Writer для записи вывода в файл.

Итак, в моем коде я пытался кодировать в utf-8 перед использованием writerow. Почему я все еще получаю сообщение об ошибке? Мое предупреждение "Юникод !!!" не выдается, пока эта ошибка не произойдет (я запускаю это на нескольких файлах, и это работает для большинства). На самом деле, однако, я не понимаю, почему писатель пытается использовать ascii, разве он не должен ожидать utf-8? Я заменил utf-8 на ascii в функции кодирования только для ударов. Те же результаты. Пожалуйста помоги!!!

        try:

           mystring=elem.find('./'+r2+'Description').text


           if isinstance(mystring, unicode):
               print("unicode!!!")
               mystring.encode('utf-8','ignore')
               datalist.append(mystring)
           else:    
               datalist.append(mystring)
        except AttributeError:
           datalist.append('No text')  

        c.writerow(datalist)

1 Ответ

9 голосов
/ 19 декабря 2011

Когда вы вызываете mystring.encode(..., строка не изменяется на месте;возвращает новую строку.

...