У объекта 'CT_Highlight' нет атрибута 'attribute' - PullRequest
1 голос
/ 02 мая 2019

Я пытаюсь прочитать текст из документа word, docx и пытаюсь найти весь текст, который выделен желтым цветом, но выдает сообщение об ошибке

import docx
document = docx.Document(r'C:/Users/devff/Documents/Prac2.docx')
rs = document._element.xpath("//w:r")
WPML_URI = '{http://schemas.openxmlformats.org/wordprocessingml/2006/main}'
tag_rPr = WPML_URI + 'rPr'
tag_highlight = WPML_URI + 'highlight'
tag_val = WPML_URI + 'val'
tag_t = WPML_URI + 't'
for word in rs:
    for rPr in word.findall(tag_rPr):
        high = rPr.findall(tag_highlight)
        for hi in high:
            if hi.attribute[tag_val] == 'yellow':  ##here is the problem
                print(word.find(tag_t).text.encode('utf-8').lower())

в идеале он должен распечатать текст, который был выделен желтым, но вместо этого он просто дает мне:

AttributeError: 'CT_Highlight' object has no attribute 'attribute'

1 Ответ

0 голосов
/ 03 мая 2019

Я думаю, вы ищете .attrib, а не .attribute.

Исправление, которое поможет вам перейти к следующему шагу, но то, как вы его структурировали, немного менее надежно, потому чтоэто вызовет исключение, если атрибут val отсутствует.Я рекомендую _Element.get() https://lxml.de/api/lxml.etree._Element-class.html, который просто возвращает None, если отсутствует атрибут с запрошенным именем:

if hi.get(tag_val) == 'yellow':
    ...
...