如何在python-docx的grep功能中实现re.IGNORECASE方法
使用python-docx实现大小写不敏感的grep功能
要实现大小写不敏感的匹配,直接用Python的re模块结合re.IGNORECASE标志即可,修改后的代码如下:
import glob from docx import Document import re # 导入正则模块 files = glob.glob("Folders/*.docx") fetchWord = "sample" # 预编译正则表达式,提升批量文件处理效率 pattern = re.compile(fetchWord, re.IGNORECASE) for file in files: document = Document(file) count = 0 for para in document.paragraphs: # 使用正则搜索替代原有的find方法 if pattern.search(para.text): print(f"{file}:段落{count}:{para.text}") count += 1 # 修正原代码未递增段落序号的问题
关键修改说明
- 新增
import re导入正则模块,用于处理大小写不敏感匹配逻辑 - 用
re.compile预编译匹配模式并添加re.IGNORECASE标志,既实现忽略大小写的匹配,又能提升多文件处理时的执行效率 - 替换原有的
find方法为正则搜索:pattern.search(para.text)会在段落文本中查找任意位置的匹配内容,只要存在匹配就返回非空结果 - 补上
count += 1,修正原代码中段落序号始终为0的问题
可选优化:精确匹配独立单词
如果需要避免匹配到包含目标词的衍生词(比如不想匹配samples或exsample),可以把正则模式改成带单词边界的形式:
pattern = re.compile(rf"\b{fetchWord}\b", re.IGNORECASE)
内容的提问来源于stack exchange,提问作者aaaaa0a
相关产品推荐
相关产品推荐

