matlab maven Apache leetcodeLCP canal安装 scroll variant swagger 网络营销视频教程 spark文档 oracle可视化工具 kafka启动命令 flutter ui构建工具 mysql连接 python调用函数 python中time java编程实例 java中new java读取文件 java获取当前日期 java网络编程 马赛克软件 r语言和python oxm ad下载 梦幻手游助手 原创检测工具 mysql时间比较 无主之地2联机超时 cad乘号 欧洲卡车模拟2存档 搜狐影音播放器 qq悄悄话怎么知道对方是谁 8700和8700k mysql密码重置 cdr怎么复制图形 CST软件 强制删除桌面ie图标 mdb是什么文件 linux解压rar
当前位置: 首页 > 学习教程  > python

对大量文本进行指定内容的批量替换

2021/2/8 15:55:42 文章标签: 测试文章如有侵权请发送至邮箱809451989@qq.com投诉后文章立即删除

首先&#xff0c;我们面对的需求是将30个SQL脚本中的where条件进行修改&#xff0c;由原来的 "CRTABLE<>‘ZT’“替换为"CRTABLE<>‘ZT’ and CRTABLE<>‘SIC’”。 这自然是可以依次打开文本&#xff0c;并手动进行替换的&#xff0c;但由于文本数…

首先,我们面对的需求是将30个SQL脚本中的where条件进行修改,由原来的 "CRTABLE<>‘ZT’“替换为"CRTABLE<>‘ZT’ and CRTABLE<>‘SIC’”。
这自然是可以依次打开文本,并手动进行替换的,但由于文本数量过大,所以我们在此选择使用python进行批量替换。
第一步:
首先将需要替换的文本,放在固定的文件夹下,便于进行批量操作,同时为了保留原始数据,我们替换后不是进行覆盖,而是新增一个文件夹,所以需要先定义两个路径:

path1="D:\\需要替换的脚本"
path2="D:\\替换完成的脚本"

第二步:
path1里的所有文本都是需要进行替换的,所以我们需要遍历整个文件夹,并且获取路径以及对应的脚本名称:

for folderName, subfolders, filenames in os.walk(path1):
    ic(filenames)
    ic(folderName)
    for file in filenames:
        source=os.path.join(folderName, file)
        target=os.path.join(path2,file)

代码中的ic,是icecream的包,如果没有安装过,可以理解为print。
这样运行之后,source实际上就是所有你需要替换的文件(包含文件路径以及文件名),target就是目标路径,加上相同的文件名。
在这里,我们是将替换后的文件换了一个文件夹,所以文件名相同不会有影响。

第三步:在获取了所有源文件以及目标文件之后,我们就要开始准备对源文件进行替换。

        with open(source, 'r+', encoding='cp936') as f1:
            with open(target,'w+',encoding='cp936') as f2:
                str1 = r"CRTABLE<>'ZT'"
                str2 = r"CRTABLE<>'ZT' and CRTABLE<>'SIC'"
                for ss in f1.readlines():
                    tt = re.sub(str1, str2, ss)
                    f2.write(tt)

这一步,就是将source中所有需要替换的内容逐行检索,并且将其替换到目标文件中。
之后打开对应的目标文件夹,就会看到已经替换过的所有脚本了。

完整代码如下:

import os
from icecream import ic
import re

path1="D:\\需要替换的脚本"
path2="D:\\替换完成的脚本"

for folderName, subfolders, filenames in os.walk(path1):
    ic(filenames)
    ic(folderName)
    for file in filenames:
        source=os.path.join(folderName, file)
        target=os.path.join(path2,file)
        ic(source)
        ic(target)
        with open(source, 'r+', encoding='cp936') as f1:
            with open(target,'w+',encoding='cp936') as f2:
                str1 = r"CRTABLE<>'ZT'"
                str2 = r"CRTABLE<>'ZT' and CRTABLE<>'SIC'"
                for ss in f1.readlines():
                    tt = re.sub(str1, str2, ss)
                    f2.write(tt)

本文链接: http://www.dtmao.cc/news_show_2000368.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?