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)

猜你喜欢

转载自blog.csdn.net/weixin_45998954/article/details/129200071