Как разобрать только текст из Word Doc с помощью Python? - PullRequest
0 голосов
/ 14 февраля 2010

Когда вы попытаетесь открыть документ MS Word или, в этом отношении, большинство форматов файлов Windows, вы увидите бред, как показано ниже, прерывистый фактическим текстом. Мне нужно извлечь текст, который входит и хочу игнорировать тарабарщину - что-то вроде приведенного ниже. Как извлечь только тот текст, который имеет значение, и игнорировать остальные вещи. Пожалуйста, сообщите.

Вот пример open("sample.doc",r").read() слова doc. Спасибо

00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00In an Interesting news,his is the first time we polled Indian channel community for their preferred memory supplier. Transcend came a close second, was seen to be more popular among class A city based resellers, was also the most recalled memory brand among customers according to resellers. However Transcend channels complained of parallel imports and constant unavailability of the products in grey x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x

Ответы [ 5 ]

3 голосов
/ 14 февраля 2010

Инструмент, который кажется наиболее жизнеспособным, особенно если вам нужно решение на всех Python, - OleFileIO .

1 голос
/ 14 февраля 2010

doc - это двоичный формат, это не язык разметки или что-то в этом роде. Спецификации: http://www.microsoft.com/interop/docs/OfficeBinaryFormats.mspx

0 голосов
/ 14 февраля 2010

У меня была похожая проблема, мне нужно было запросить сотни документов Word. Я преобразовал файлы Word в текстовые файлы и использовал обычные инструменты анализа текста. Работал хорошо.

0 голосов
/ 14 февраля 2010

Word doc - это сжатый формат. Сначала вам нужно распаковать его, чтобы получить реальные данные (попробуйте открыть файл doc в такой программе, как winrar, и вы увидите, что он содержит несколько файлов.

Это даже кажется XML, поэтому чтение формата не должно быть таким сложным, хотя я не уверен, что вы получите все данные таким образом.

0 голосов
/ 14 февраля 2010

Там нет общего, почему извлечь информация из каждого формата файла. Вам нужно знать формат, чтобы знать как извлечь информацию.

Просто хотел заявить об этом первым. Поэтому вам нужно искать библиотеки и программы, которые могут преобразовывать / извлекать нужную вам информацию. И, как упомянул Ofir MicroSoft, для этого есть инструменты для их форматов.

Но если вы не можете сделать это и хотите воспользоваться шансом, что в файле есть текст, который вы считаете интересным для чтения, вы можете выполнить обычное чтение и найти последовательности байтов, которые будут создавать текст. Затем возникает вопрос, какие языки / кодировку я должен поддерживать при поиске текста. Это многобайтовый текст?

Простое начало - циклически просматривать данные и искать последовательности [a-zA-z0-9_-], чтобы найти текст. Но слово, вероятно, многобайтовое. Таким образом, вы должны отсканировать двойной байт как один символ.

Примечание : некоторые новые форматы, такие как open office и docx, представляют собой несколько файлов в сжатом контейнере. Поэтому сначала необходимо распаковать файл и отсканировать документы XML после текста, который вы ищете.

...