Python: специальные символы, дающие мне проблемы (из PDFminer)

Я использовал pdf2text из PDFminer, чтобы уменьшить PDF-текст. К сожалению, он содержит специальные символы. Позвольте мне показать вывод с моей консоли

>>>a=pdf_to_text("ap.pdf") 

heres образец его, немного усеченный

  • Python: try-except как выражение?
  • Графовые гласные в String Python
  • Загрузка объектов хранилища данных из проекта Python в Go приводит к вложенным structs slices of slices error
  • Открытая встроенная функция python: разница между режимами a, a +, w, w + и r +?
  • Преобразование вывода «yield from» в код Python 2.7
  • Облачные конечные точки с несколькими классами служб
  •  >>>a[5000:5500] 'f one architect. Decades ...... but to re\xef\xac\x82ect\none set of design ideas, than to have one that contains many\ngood but independent and uncoordinated ideas.\n1 Joshua Bloch, \xe2\x80\x9cHow to Design a Good API and Why It Matters\xe2\x80\x9d, G......=-3733' 

    Я понял, что я должен кодировать его

     >>>a[5000:5500].encode('utf-8') Traceback (most recent call last): File "<interactive input>", line 1, in <module> UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 237: ordinal not in range(128) 

    Я немного искал и пробовал их, в частности заменил специальные символы на python . Вход поступает от PDFminer, поэтому его жесткий (AFAIK), чтобы контролировать это. Каким образом можно сделать правильный текст из этого вывода?

    Что я делаю не так?

    – Быстрое исправление: измените кодек PDFminer на ascii-, но это не долговременное решение –

    –Абоксированное быстрое исправление для ответа – изменение кодека удаляет информацию –

    – Революционная тема, упомянутая Максимом http://en.wikipedia.org/wiki/Windows-1251 –

  • Как запретить доступ к файлу для одного пользователя?
  • Максимальное значение для длинного целого
  • Начальная практика Python?
  • Неизменяемый словарь, используйте только ключ для другого словаря
  • Как сделать анонимайзер в python?
  • В Python, как проверить, является ли строка последней?
  • One Solution collect form web for “Python: специальные символы, дающие мне проблемы (из PDFminer)”

    Эта проблема часто возникает, когда текст не-ASCII хранится в объектах str . То, что вы пытаетесь сделать, – это кодировать в utf-8 строку, уже закодированную в некоторой кодировке (потому что она содержит символы с кодами выше 0x7f ).

    Чтобы закодировать такую ​​строку в utf-8 она должна быть сначала расшифрована. Предполагая, что исходное кодирование текста – cp1251 (замените его фактической кодировкой), что-то вроде следующего будет делать трюк:

     u = s.decode('cp1251') # decode from cp1251 byte (str) string to unicode string s = u.encode('utf-8') # re-encode unicode string to utf-8 byte (str) string 

    В основном, приведенный выше фрагмент делает команду iconv --from-code=CP1251 --to-code=UTF-8 , то есть преобразует строку из одной кодировки в другую.

    Некоторые полезные ссылки:

    • Python Unicode HOWTO
    • Разработка приложений с поддержкой Unicode в Python
    Python - лучший язык программирования в мире.