Python-docx - 检查 table 中的文本是否应用了隐藏属性
Python-docx - check if text in table has hidden attribute applied
我是 Python 的新手,我正在尝试检查 docx 文件中是否有 table 中应用了隐藏属性的文本。如果为真,那么我想忽略该隐藏文本并替换与我的正则表达式匹配的任何其他文本。
在我添加 if i.font.hidden == True: 条件似乎不正确之前,一切都很好(替换工作正常)。
我得到的错误:
AttributeError: 'int' 对象没有属性 'font'
这是我的代码:
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for p in cell.paragraphs:
if True:
inline = p.runs
for i in range(len(inline)):
if True:
if i.font.hidden == True:
continue
else:
text = inline[i].text.replace(regx, 'Abcd')
inline[i].text = text
在您的例子中,i
只是一个整数,因为您正在遍历整数列表。
我猜你需要这样的东西:
if inline[i].font.hidden == True:
*do stuff*
无需按索引访问运行;你可以直接迭代那些:
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for p in cell.paragraphs:
for run in p.runs:
if not run.font.hidden:
run.text = run.text.replace(regx, 'Abcd')
我是 Python 的新手,我正在尝试检查 docx 文件中是否有 table 中应用了隐藏属性的文本。如果为真,那么我想忽略该隐藏文本并替换与我的正则表达式匹配的任何其他文本。
在我添加 if i.font.hidden == True: 条件似乎不正确之前,一切都很好(替换工作正常)。
我得到的错误: AttributeError: 'int' 对象没有属性 'font'
这是我的代码:
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for p in cell.paragraphs:
if True:
inline = p.runs
for i in range(len(inline)):
if True:
if i.font.hidden == True:
continue
else:
text = inline[i].text.replace(regx, 'Abcd')
inline[i].text = text
在您的例子中,i
只是一个整数,因为您正在遍历整数列表。
我猜你需要这样的东西:
if inline[i].font.hidden == True:
*do stuff*
无需按索引访问运行;你可以直接迭代那些:
for table in doc.tables:
for row in table.rows:
for cell in row.cells:
for p in cell.paragraphs:
for run in p.runs:
if not run.font.hidden:
run.text = run.text.replace(regx, 'Abcd')