2

Я извлекаю текст, используя python из текстового файла, созданного из pdf, используя pdftotext. Это один из 2000 файлов, и в этом конкретном случае линия ключевых слов заканчивается в ЕС. Остальная часть линии пустая для невооруженного глаза, и следующая строка.PDFtotext - пробелы, показывающие как aacute на командной строке

Программа обычно удаляет любые завершающие пробелы в конце строки и игнорирует последующую пустую строку.

В этом случае он сохраняет пробелы, которые видны при печати в текстовом файле между «ЕС» и аналогичным образом в html (Simile Exhibit).

Я также напечатал в командной строке, и здесь я вижу строку aacute. [?]

Я думал, что явный способ справиться с этим - искать и заменять accute. Я попытался сделать это с помощью компиляции, и я играл с перестановками для декодирования входящего текста.

Как ни странно, когда я печатаю «\ 255», я не понимаю, у меня есть могила.

Кажется вероятным с этой странной комбинацией ошибок, что я неправильно понял что-то фундаментальное. Какие-нибудь подсказки о том, как начать распутывать это?

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

ответ

0

Первый совет - не печатать на всех возможных механизмах вывода, используя различные неустановленные кодировки. Узнайте, что у вас есть. Сделайте это:

print repr(the_line_with_the_problem) # Python 2.x 
print(ascii(the_line_with_the_problem)) # Python 3.x 

и отредактировать ваш вопрос и скопировать/вставить результат.

Второй совет: Когда просят о помощи, дать информацию о среде:

Какую версию Python? Какая версия какой операционной системы?

Также показать информацию, связанную с locale; Следующий пример из моего компьютера под управлением Python 2.7 в 7 окне командной строки Windows, ::

>>> import sys, locale 
>>> sys.getdefaultencoding() 
'ascii' 
>>> sys.stdout.encoding 
'cp850' 
>>> locale.getdefaultlocale() 
('en_AU', 'cp1252') 
>>> 

Третьего совет: Не используйте свой собственный жаргон ... Понятия «уподобление Экспозицию», «напечатанный в команду строка ", и" компиляция заявление "нуждается в объяснении.

В чем смысл "\255"? С чего взял?

домыслы в ожидании некоторые факты появляться:

(1) Нарушитель символ U + 00A0 NO-BREAK ПРОСТРАНСТВО ака NBSP, который появляется в тексте, как "\xA0" и когда отправляется на стандартный вывод в Западноевропейский язык в Windows с использованием окна командной строки будет рассматриваться как кодированный в cp850 и, таким образом, выглядит как острый. То, как это может быть трансформировано в о-могилу, - загадка.

(2) "\255" == \xAD подразумевает обижая характер является U + 00AD SOFT HYPHEN, но почему это будет рассматриваться как о-могила является тайной, и это не «пробелы»; его вообще не следует показывать, и показано, что он должен быть как знак дефиса/минуса, а не пробел.

+0

Спасибо, кучи. Вы разобрали мою проблему. Я скомпилировал поисковый запрос для «\ xA0», а затем я могу удалить оскорбительный NBSP. И, похоже, мы не можем использовать новую строку здесь без отправки. Это неудобно! Я также узнал, как отображать нарушающий код, и узнал, что кодировка изменяется, когда я перенаправляю вывод из окна Commmand Prompt в текстовый файл и v.v. Огромное спасибо. – jobucks

+0

@ jobucks: Где факты? «Скомпилированный поисковый запрос» означает что? re.compile() ?? «не может использовать новую строку здесь без отправки»? Пожалуйста, объясни. Кроме того, что это было за «\ 255» и o-grave? –