我想使用python-docx突出显示文件夹中docx文件中的正则表达式模式。我可以通过下面的普通正则表达式代码实现它。
当我想通过spacy nlp实现同样的目标时,问题就来了。
from docx import Document
from docx.enum.text import WD_COLOR_INDEX
import pandas as pd
import os
import re
import spacy
nlp = spacy.load("en_core_web_sm")
path = r"/home/coder/Documents/"
doc1 = Document('test.docx')
doc = nlp(doc1)
#re_highlight = re.compile(r"[1-9][0-9]*|0") # This one works.
re_highlight = [token for token in doc if tok.like_num == "TRUE"]
for filename in os.listdir(path):
if filename.endswith(".docx"):
file = "/home/writer/Documents/" + filename
print(file)
for para in doc.paragraphs:
text = para.text
if len(re_highlight.findall(text)) > 0:
matches = re_highlight.finditer(text)
para.text = ''
p3 = 0
for match in matches:
p1 = p3
p2, p3 = match.span()
para.add_run(text[p1:p2])
run = para.add_run(text[p2:p3])
run.font.highlight_color = WD_COLOR_INDEX.YELLOW
para.add_run(text[p3:])
doc.save(file)
错误:
raise ValueError(Errors.E1041.format(type=type(doc_like)))
ValueError:[E1041]输入应为字符串、文档或字节,但得到了:〈class 'docx.document. document'〉
我发现文档中没有doc.paragraphs作为nlp元素。如何解决这个问题?
请帮忙。
1条答案
按热度按时间xoshrz7s1#
你不能在
doc1
是Document
对象的情况下执行nlp(doc1)
,你必须提取文本部分并使用它们。我建议类似于以下内容(在这里为示例文件工作):有可能会意外地突出显示。如果发生这种情况,你可以尝试使用
而不是