Извлечение выделенных слов из документа Word (.docx) в Python - PullRequest
3 голосов
/ 05 марта 2012

Я работаю с кучей текстовых документов, в которых у меня есть текст (слова), которые выделены (используя цветовые коды, например, желтый, синий, серый), теперь я хочу извлечь выделенные слова, связанные с каждым цветом.Я программирую на Python.Вот что я сделал в настоящее время:

открыл слово document с помощью [python-docx][1] и затем попал в тег <w:r>, который содержит токены (слова) в документе.Я использовал следующий код:

#!/usr/bin/env python2.6
# -*- coding: ascii -*-
from docx import *
document = opendocx('test.docx')
words = document.xpath('//w:r', namespaces=document.nsmap)
for word in words:
  print word

Теперь я застрял в той части, где я проверяю каждое слово, имеет ли оно тег <w:highlight>, и извлекаю из него код цвета и соответствует ли он желтому печатному тексту.внутри <w:t> тег.Я буду очень признателен, если кто-то может указать мне на извлечение слова из проанализированного файла.

1 Ответ

4 голосов
/ 05 марта 2012

Раньше я никогда не работал с python-docx , но мне помогло то, что я нашел в Интернете фрагмент того, как выглядит структура XML выделенного фрагмента текста:

 <w:r>
    <w:rPr>
      <w:highlight w:val="yellow"/>
    </w:rPr>
    <w:t>text that is highlighted</w:t>
  </w:r>

Оттуда было относительно просто придумать следующее:

from docx import *
document = opendocx(r'test.docx')
words = document.xpath('//w:r', namespaces=document.nsmap)

WPML_URI = "{http://schemas.openxmlformats.org/wordprocessingml/2006/main}"
tag_rPr = WPML_URI + 'rPr'
tag_highlight = WPML_URI + 'highlight'
tag_val = WPML_URI + 'val'

for word in words:
    for rPr in word.findall(tag_rPr):
        if rPr.find(tag_highlight).attrib[tag_val] == 'yellow':
            print word.find(tag_t).text
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...