Python - использование docx для извлечения текстов с определенными функциями из текстовых документов - PullRequest
0 голосов
/ 24 января 2020

У меня есть вопрос об использовании python для идентификации текстов с определенными функциями из текстового документа

I wi sh для извлечения текстов, выделенных жирным шрифтом и имеющих кавычки, например:

"Это" предложение"в документе word."

Как мне определить слово " предложение " в python?

Вот что у меня есть на данный момент:

from docx import Document    
document = Document(filepath)
short_list = []
for paragraph in document.paragraphs:
    for run in paragraph.runs:
       if run.bold:
          short_list.append(run.text)

Спасибо всем за помощь!

Ответы [ 3 ]

0 голосов
/ 24 января 2020

Немного хитрое решение: сначала преобразуйте файл docx в формат html, используя mammoth, а затем проанализируйте его с помощью regex:

import re
import mammoth

with open('file.docx', 'rb') as f:
    html = mammoth.convert_to_html(f).value
    result = re.findall('&quot;<strong>(.*?)<\/strong>&quot;', html)

Я создал образец docx файл с текстом в теле и сноске:

enter image description here

Вот мой вывод:

['sentence', 'one more sentence', 'final sentence']
0 голосов
/ 24 января 2020

Я бы предположил, что вы не можете.

Файл docx фактически является zip-файлом, и, согласно документации модуля Python docx, объект Document представляет документ. xml часть файла. К сожалению, сноски хранятся в другой части: сноски. xml.

Как и в PyPi, модули объявляют свой статус разработки как 3-альфа, я полагаю, что в настоящее время он не может обрабатывать сноски.

ИМХО, вы должны сначала посмотреть, есть ли уже открытые вопросы по этому вопросу, и если да, прокомментировать его, или же заполнить новый вопрос на странице проекта .

0 голосов
/ 24 января 2020

Попробуйте использовать приведенный ниже пример кода:

for paragraph in document.paragraphs:
    if 'sea' in paragraph.text:
        print paragraph.text
        paragraph.text = 'new text containing ocean'

Для поиска в таблицах также необходимо использовать что-то вроде:

for table in document.tables:
    for cell in table.cells:
        for paragraph in cell.paragraphs:
            if 'sea' in paragraph.text:
               ...

См. Как использовать python -docx для замены текста в документе Word и сохранения

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