如何从 python docx 中删除粗体字
how to remove bold words from python docx
我有一个 docx,需要使用 spaCy 进行预处理。我需要删除文档中所有以粗体显示的词。
我尝试了以下方法:
def delete_paragraph(paragraph):
p = paragraph._element
p.getparent().remove(p)
p._p = p._element = None
length = len(document.paragraphs)
for i in range(0,length):
for j in range(0,len(document.paragraphs[i].runs)):
if document.paragraphs[i].runs[j].bold == True:
delete_paragraph(document.paragraphs[i])
length = length-1
continue
document.save("/home/nikita/Desktop/Internship/new topic_mod/AXIS new.docx")
但是我收到以下错误:
IndexError: Traceback (most recent call last)
<ipython-input-12-d144bd42e95e> in <module>()
3 #print(document.paragraphs[i].text)
4 for j in range(0,len(document.paragraphs[i].runs)):
----> 5 if document.paragraphs[i].runs[j].bold == True:
6 delete_paragraph(document.paragraphs[i])
7 length = length-1
IndexError: list index out of range
我不明白为什么它超出了范围。
如何从 python-docx 中删除粗体字词?
请帮忙!
有几个可能的原因:
删除段落后,您需要跳出(而不是 continue
)内部循环,否则如果同一段落超过一个粗体 运行.
for j in range(0,len(document.paragraphs[i].runs)):
if document.paragraphs[i].runs[j].bold == True:
delete_paragraph(document.paragraphs[i])
length = length-1
break
每删除一个段落,您的段落列表就会变短,这会改变后面每个段落的索引。如果您从下到上遍历段落,那将不是问题。此外,您可以放弃所有 (i, j) 索引管理; Python 很少需要那个。
for paragraph in reversed(list(document.paragraphs)):
for run in paragraph.runs:
if run.bold:
delete_paragraph(paragraph)
break
我有一个 docx,需要使用 spaCy 进行预处理。我需要删除文档中所有以粗体显示的词。
我尝试了以下方法:
def delete_paragraph(paragraph):
p = paragraph._element
p.getparent().remove(p)
p._p = p._element = None
length = len(document.paragraphs)
for i in range(0,length):
for j in range(0,len(document.paragraphs[i].runs)):
if document.paragraphs[i].runs[j].bold == True:
delete_paragraph(document.paragraphs[i])
length = length-1
continue
document.save("/home/nikita/Desktop/Internship/new topic_mod/AXIS new.docx")
但是我收到以下错误:
IndexError: Traceback (most recent call last)
<ipython-input-12-d144bd42e95e> in <module>()
3 #print(document.paragraphs[i].text)
4 for j in range(0,len(document.paragraphs[i].runs)):
----> 5 if document.paragraphs[i].runs[j].bold == True:
6 delete_paragraph(document.paragraphs[i])
7 length = length-1
IndexError: list index out of range
我不明白为什么它超出了范围。 如何从 python-docx 中删除粗体字词?
请帮忙!
有几个可能的原因:
删除段落后,您需要跳出(而不是
continue
)内部循环,否则如果同一段落超过一个粗体 运行.for j in range(0,len(document.paragraphs[i].runs)): if document.paragraphs[i].runs[j].bold == True: delete_paragraph(document.paragraphs[i]) length = length-1 break
每删除一个段落,您的段落列表就会变短,这会改变后面每个段落的索引。如果您从下到上遍历段落,那将不是问题。此外,您可以放弃所有 (i, j) 索引管理; Python 很少需要那个。
for paragraph in reversed(list(document.paragraphs)): for run in paragraph.runs: if run.bold: delete_paragraph(paragraph) break