Современные файлы ms-word (.docx
) на самом деле являются zip-файлами.
Текст (но не заголовки страниц) фактически находится внутри XML документа, называемого word/document.xml
в zip-файле. файл.
Модуль python-docx
можно использовать для извлечения текста из этих документов. Он в основном используется для создания документов, но он может читать существующие. Пример из здесь .
>>> import docx
>>> gkzDoc = docx.Document('grokonez.docx')
>>> fullText = []
>>> for paragraph in doc.paragraphs:
... fullText.append(paragraph.text)
...
Обратите внимание, что это будет извлекать текст только из абзацев. Например, текст из таблиц.
Редактировать :
Я хочу иметь возможность загружать MS-файл с помощью виджета FileUpload.
Есть несколько способов сделать это.
Во-первых, изолируйте фактические данные файла. upload.data
на самом деле словарь, см. здесь . Так что сделайте что-то вроде:
rawdata = upload.data[0]
(Обратите внимание, что этот формат изменил по сравнению с другой версией ipywidgets. Приведенный выше пример взят из документации к последней версии. Прочитайте соответствующую версию документацию или исследуйте данные в I Python и скорректируйте их соответствующим образом.)
- напишите
rawdata
, например, foo.docx
и откройте его. Это, безусловно, сработает, но это выглядит несколько не элегантно. docx.Document
может работать с файловыми объектами. Таким образом, вы можете создать io.BytesIO
объект и использовать его.
Вот так:
foo = io.BytesIO(rawdata)
doc = docx.Document(foo)