Python实现数据的查找和替换

目录

1.前言

2.需求

3.解决思路 

4.源代码


1.前言

        当一篇几万字的Word文档中存在很多的错别字又或者是我们需要去对某个词段进行替换,这个时候如果一个一个的去查找是相当费时费力的,看看怎么使用Python来高效的解决这个问题

2.需求

        这里有一个文本库Word,用它来充当要被修改的文件

目标文档

         下面一张用来对比错误点的勘误表,里面记录了需要被修改的字段以及替换字段

勘误表

        现在需要写一段代码来实现Word文本中的文字替换

3.解决思路 

        先打开两个文件,获取文件对象        

# 导入模块
from docx import Document
from openpyxl import load_workbook

# 打开勘误表
wb=load_workbook('勘误表.xlsx')
ws=wb.active

doc=Document('文本库.docx')

        遍历勘误表中的数据,提取出原词和替换词,每提取出一组词段就对整个Word文本的内容进行遍历,因为我们不知道Word文本中的文字是在run对象中还是在paragraph对象中,所以需要采用两种方式进行遍历

        

        当从文本库中检索出来的词段和勘误表中的原词一致,就使用原词对应的替换词来进行替换,使用语法 str.replace(旧词,新词)

for row in ws.iter_rows(min_row=3,values_only=True):
    old_code=row[0]
    new_code=row[1]
    # 通过run对象去检索修改
    for p in doc.paragraphs:
        for run in p.runs:
            if old_code in run.text:
                # replace函数可以实现用新词去替换掉旧词
                run.text=run.text.replace(old_code,new_code)
    # 通过段落对象去检索修改
    for p2 in doc.paragraphs:
        if old_code in p2.text:
            p2.text=p2.text.replace(old_code,new_code)

             替换完成之后保存文件

doc.save('新文本库.docx')

4.源代码

# 导入模块
from docx import Document
from openpyxl import load_workbook

# 打开勘误表
wb=load_workbook('勘误表.xlsx')
ws=wb.active

doc=Document('文本库.docx')

for row in ws.iter_rows(min_row=3,values_only=True):
    old_code=row[0]
    new_code=row[1]
    # 通过run对象去检索修改
    for p in doc.paragraphs:
        for run in p.runs:
            if old_code in run.text:
                # replace函数可以实现用新词去替换掉旧词
                run.text=run.text.replace(old_code,new_code)
    # 通过段落对象去检索修改
    for p2 in doc.paragraphs:
        if old_code in p2.text:
            p2.text=p2.text.replace(old_code,new_code)

doc.save('新文本库.docx')

        在字段替换时也可以利用re正则表达式来实现

        具体语法可以学习参考:正则表达式 – 语法 | 菜鸟教程 (runoob.com)

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值