Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 17, 2011 21:27:51

Sirorezka
От:
Зарегистрирован: 2011-06-17
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка byte переменной

Никак не получается перекодировать byte переменную в str, чтобы сохранились читаемые кириллические символы. Версия Python 3.x

Вопрос простой, но всё, что можно уже попробовал. Я хочу достать текст из docx и записать его в txt, чтобы потом строки из этого txt можно было обрабатывать.

Вот так я достаю данные из docx:
docx=zipfile.ZipFile('VeryLongWordFile.docx')
content = docx.read('word/document.xml')

Теперь переменная content имеет тип byte, и если к ней применить функцию textcontent=str(content), то в итоге вместо кириллических букв получим /xb05/xb04 и тп. Если попытаться поменять кодировку textcontent, то появляется ошибка, что не все символы поддаются перекодировке.

А если использовать str(content, “cp866”), то опять возникнет ошибка, что не все символы поддаются перекодировке.

Как переменную content перевести в строку, чтобы сохранилась возможность читать русский текст?



Офлайн

#2 Июнь 18, 2011 01:40:31

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Перекодировка byte переменной

есть такое слово: utf-8



Офлайн

#3 Июнь 18, 2011 15:29:46

Sirorezka
От:
Зарегистрирован: 2011-06-17
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка byte переменной

Андрей Светлов
есть такое слово: utf-8
contenttext=str(content,“utf-8”)

f1=open(“textutf-8.txt”,“w”)
f1.write (contenttext)
f1.close

Тогда как раз то, о чём я говорю - возникает ошибка записи в файл: “'charmap' codec can't encode characters in position…”



Офлайн

#4 Июнь 19, 2011 03:08:06

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Перекодировка byte переменной

http://docs.python.org/py3k/library/functions.html#open
параметр с именем encoding как бы намекает, что нужно открыть файл как f1=open(“textutf-8.txt”,“w”, encoding='utf-8')



Офлайн

#5 Июнь 21, 2011 22:48:11

Sirorezka
От:
Зарегистрирован: 2011-06-17
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка byte переменной

Спасибо! Это помогло



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version