Ответ 1
вы можете попробовать это
import docx
def getText(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append(para.text)
return '\n'.join(fullText)
Я пытаюсь использовать модуль python-docx
(pip install python-docx
)
но это кажется очень запутанным, поскольку в тестовом примере github repo они используют функцию opendocx
, но в readthedocs они используют класс Document
. Даже они только показывают, как добавить текст в файл docx, не читающий существующий?
1-й (opendocx
) не работает, может быть устаревшим. Во втором случае я пытался использовать:
from docx import Document
document = Document('test_doc.docx')
print document.paragraphs
Он вернул список <docx.text.Paragraph object at 0x... >
Тогда я сделал:
for p in document.paragraphs:
print p.text
Он вернул весь текст, но его было мало. Все URL-адреса (CTRL + CLICK, чтобы перейти к URL-адресу) не присутствовали в тексте на консоли.
В чем проблема? Почему URL-адреса отсутствуют?
Как я могу получить полный текст без повторения цикла (что-то вроде open().read()
)
вы можете попробовать это
import docx
def getText(filename):
doc = docx.Document(filename)
fullText = []
for para in doc.paragraphs:
fullText.append(para.text)
return '\n'.join(fullText)
Вы можете использовать python-docx2txt, который адаптирован из python-docx, но также может извлекать текст из ссылок, верхних и нижних колонтитулов. Он также может извлекать изображения.
Существует два "поколения" python-docx. Начальное поколение закончилось версиями 0.2.x, а "новое" поколение началось с версии 3.0. Новое поколение - это новаторская, объектно-ориентированная переработка устаревшей версии. Здесь есть отдельный репозиторий.
Функция opendocx() является частью устаревшего API. Документация предназначена для новой версии. У устаревшей версии нет документации, о которой можно было бы говорить.
В текущей версии поддержка чтения и записи гиперссылок не поддерживается. Эта возможность находится в дорожной карте, и проект находится в активном развитии. Это, оказывается, довольно широкий API, потому что Word имеет так много функциональности. Поэтому мы займемся этим, но, вероятно, не в следующем месяце, если кто-то не решит сосредоточиться на этом аспекте и внести свой вклад.
вы можете попробовать это также
from docx import Document
document = Document('demo.docx')
for para in document.paragraphs:
print(para.text)
Без установки python-docx
docx
- это в основном zip файл с несколькими папками и файлами внутри него. В приведенной ниже ссылке вы можете найти простую функцию для извлечения текста из файла docx
без установки python-docx
и lxml
, которые иногда создают проблему:
http://etienned.github.io/posts/extract-text-from-word-docx-simply/
У меня была аналогичная проблема, поэтому я нашел обходное решение (удалять метки гиперссылок благодаря регулярным выражениям, так что остается только тег абзаца). Я разместил это решение на https://github.com/python-openxml/python-docx/issues/85 BP