使用 python-docx 突出显示文本
highlight text using python-docx
我想突出显示 docx 中的文本并将其保存到另一个文件中。
这是我的代码
from docx import Document
def highlight_text(filename):
doc = Document(filename)
for p in doc.paragraphs:
if 'vehicle' in p.text:
inline = p.runs
# print(inline)
# Loop added to work with runs (strings with same style)
for i in range(len(inline)):
# print((inline[i].text).encode('ascii'))
if 'vehicle' in inline[i].text:
x=inline[i].text.split('vehicle')
inline[i].clear()
for j in range(len(x)-1):
inline[i].add_text(x[j])
y=inline[i].add_text('vehicle')
y.highlight_color='YELLOW'
# print (p.text)
doc.save('t2.docx')
return 1
if __name__ == '__main__':
highlight_text('t1.docx')
单词没有突出显示我做错了什么。
突出显示是 字体 的属性,而不是直接 运行 的属性。此外,Run.add_text()
returns 是 _Text
对象,而不是 运行。
from docx.enum.text import WD_COLOR_INDEX
for paragraph in document.paragraphs:
if 'vehicle' in paragraph.text:
for run in paragraph.runs:
if 'vehicle' in run.text:
x = run.text.split('vehicle')
run.clear()
for i in range(len(x)-1):
run.add_text(x[i])
run.add_text('vehicle')
run.font.highlight_color = WD_COLOR_INDEX.YELLOW
此外,高亮显示应用于整个 运行,因此您需要为 "vehicle"、[=23= 之前的每个文本创建单独的 运行 ] 单词本身,以及 "vehicle".
之后的文本
此外,不能保证给定的单词完全出现在单个 运行 中; 运行s 经常在一个词中分裂。因此,您需要在处理一般情况的方法上更加成熟。
所以这里还有很多工作要做,但这应该会让您至少看到一些黄色突出显示:)
我想突出显示 docx 中的文本并将其保存到另一个文件中。 这是我的代码
from docx import Document
def highlight_text(filename):
doc = Document(filename)
for p in doc.paragraphs:
if 'vehicle' in p.text:
inline = p.runs
# print(inline)
# Loop added to work with runs (strings with same style)
for i in range(len(inline)):
# print((inline[i].text).encode('ascii'))
if 'vehicle' in inline[i].text:
x=inline[i].text.split('vehicle')
inline[i].clear()
for j in range(len(x)-1):
inline[i].add_text(x[j])
y=inline[i].add_text('vehicle')
y.highlight_color='YELLOW'
# print (p.text)
doc.save('t2.docx')
return 1
if __name__ == '__main__':
highlight_text('t1.docx')
单词没有突出显示我做错了什么。
突出显示是 字体 的属性,而不是直接 运行 的属性。此外,Run.add_text()
returns 是 _Text
对象,而不是 运行。
from docx.enum.text import WD_COLOR_INDEX
for paragraph in document.paragraphs:
if 'vehicle' in paragraph.text:
for run in paragraph.runs:
if 'vehicle' in run.text:
x = run.text.split('vehicle')
run.clear()
for i in range(len(x)-1):
run.add_text(x[i])
run.add_text('vehicle')
run.font.highlight_color = WD_COLOR_INDEX.YELLOW
此外,高亮显示应用于整个 运行,因此您需要为 "vehicle"、[=23= 之前的每个文本创建单独的 运行 ] 单词本身,以及 "vehicle".
之后的文本此外,不能保证给定的单词完全出现在单个 运行 中; 运行s 经常在一个词中分裂。因此,您需要在处理一般情况的方法上更加成熟。
所以这里还有很多工作要做,但这应该会让您至少看到一些黄色突出显示:)