При извлечении текста из файла Open Document генерируется UnicodeEncodeError

Я пытаюсь преобразовать заметки, прикрепленные к файлу презентации Open Document, в текст, используя odfpy. Мне удалось открыть файл, составить список объектов "заметок", мне удалось извлечь из этого то, что я считаю абзацами, и это каким-то образом работает, пока я не попытаюсь напечатать заметки со специальными символами (German Umlauts öäü), которые вызывают ошибки:

UnicodeEncodeError: кодек "ascii" не может кодировать символы в позиции 17-19: порядковый номер не в диапазоне (128)

Теперь я понял, что я не первый, кто столкнулся с проблемой кодирования, и я с радостью погрузился бы в перекодировку текста. Моя проблема в том, что я не знаю, как преобразовать заметки в правильные строки. Вот мой код:

import sys
from odf.presentation import Notes
from odf.opendocument import load
from odf import text

doc=load(sys.argv[1])
slides=doc.presentation
notes=slides.getElementsByType(Notes)

for page in notes:
    pars = page.getElementsByType(text.P)
    for p in pars:
        print p

Я просто перебираю элементы и пытаюсь их напечатать, надеясь, что волшебным образом появится текст из заметок. Я разместил образец файла презентации по адресу https://spideroak.com/browse/share/enno_middelberg/public/public чтобы проиллюстрировать проблему.

Может кто-нибудь просветить меня, как получить текст из элементов ODF и в строку?

Большое спасибо,

Энно

1 ответ

Решение

str(p) не удается, потому что p содержит текст не ascii.

использование print unicode(p)

Другие вопросы по тегам