我正在尝试从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'
答案 0 :(得分:0)
我认为您正在寻找的是.attrib
,而不是.attribute
。
修复该问题将使您进入下一步,但是构建它的方式有点不可靠,因为如果没有val
属性,它将引发异常。我建议使用_Element.get()
https://lxml.de/api/lxml.etree._Element-class.html,如果不存在带有所请求名称的属性,它只会返回None
:
if hi.get(tag_val) == 'yellow':
...