Разбор Word Документа в Python - PullRequest
1 голос
/ 27 декабря 2011

Я хотел преобразовать текстовый документ в текст.Поэтому я использовал скрипт.

import win32com.client 

app = win32com.client.Dispatch('Word.Application') 
doc = app.Documents.Open(r'C:\Users\SBYSMR10\Desktop\New folder (2)\GENERAL DATA.doc') 
content=doc.Content.Text
app.Quit()
print content

У меня есть следующий результат:

enter image description here

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

content = " ".join(content.replace(u"\xa0", " ").strip().split())

РЕДАКТИРОВАТЬ

Когда я это делаю, я получаю:

enter image description here

Это несписок.В чем проблема?Что это за крупная точка?

Ответы [ 4 ]

9 голосов
/ 27 декабря 2011

Документы Word не являются текстовыми, они являются документами: они имеют управляющую информацию (например, форматирование) и текст. Если вы игнорируете управляющую информацию, текст довольно бесполезен.

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

Примечание: вы обнаружите, что Слово очень сложное. Если вы можете, рассмотрите также эти два подхода:

  • Сохраните документ Word как HTML из Word. Это потеряет некоторое форматирование, но списки останутся нетронутыми. Разобрать и понять HTML гораздо проще, чем Word.

  • сохранить документ как OOXML (существует, по крайней мере, начиная с Office 10, расширение - .docx). Это ZIP-архив с XML-документами внутри. XML снова легче анализировать / понимать, чем полный документ Word, но сложнее, чем HTML-версия.

0 голосов
/ 27 января 2014

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

import os
directory='your/path/to/file/'
file='yourword.doc'
doc=open(directory+file,'r+b')
for line in doc:
    line2=str(line)
    print(line2))

Я использовал регулярное выражение, чтобы получить именно то, что мне нужно.Но этот код будет читать каждую строку вашего текстового документа (форматирование и все) и преобразовывать его в красивые строки, с которыми вы можете иметь дело.Не уверен, что это вообще полезно (этому посту пару лет), но, по крайней мере, он анализирует слово document.Тогда нужно просто избавиться от ненужных строк перед записью в текстовый файл.

0 голосов
/ 27 декабря 2011

проверьте этот пост в этой ссылке и ее комментариях: Преобразование документов Word в текст (рецепт Python)

также этот пост может быть полезен: Python конвертирует документы Microsoft Office для обычного текста в Linux

0 голосов
/ 27 декабря 2011

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

content = "" .join (content.replace (u "\ xa0", "") .strip (). Split ())

Это не список. В чем проблема?

Метод .join всегда возвращает строку . Он ожидает, что вы передадите список, а затем объединит этот список с указанным разделителем ("" в вашем случае).

Кроме того, что сказал Аарон Дигулла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...