“ CT_Highlight”对象没有属性“ attribute”

时间:2019-05-02 19:34:09

标签: python ms-word docx python-docx

我正在尝试从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 :(得分:0)

我认为您正在寻找的是.attrib,而不是.attribute

修复该问题将使您进入下一步,但是构建它的方式有点不可靠,因为如果没有val属性,它将引发异常。我建议使用_Element.get() https://lxml.de/api/lxml.etree._Element-class.html,如果不存在带有所请求名称的属性,它只会返回None

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