批量替换字符串的python实现

Posted clever101

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了批量替换字符串的python实现相关的知识,希望对你有一定的参考价值。

作者:朱金灿
来源:clever101的专栏

为什么大多数人学不会人工智能编程?>>>

问题描述

  最近在编译glut库,发现很多makefile文件需要批量替代字符串,于是就用python写了一个工具程序实现批量替代字符串。

问题解决

  这个功能主要涉及两个函数:遍历指定目录下的指定后缀的文件和对单个文件进行字符串替换。代码实现如下:

#!/usr/bin/python
# -*- coding=utf-8 -*-
# author : clever101@163.com
# date: 2022-05-30
# version: 0.1
#propose:遍历文件夹中在多个文本文件中替换字符串
#参考文献:
#Python实践:一键批量替换不同文本字符串
#https://blog.csdn.net/qq_17256689/article/details/123485731

import sys
import os

# repalce str_a with str_b
def file_process(file_path, a, b):
    print(file_path)
    lens = len(a)
    f = open(file_path, 'r+', encoding='utf-8')
    all_the_lines = f.readlines()
    f.seek(0)  # 移动文件指针,到最开始处
    f.truncate()      # 从当前位置起,往后所有数据进行截断删除
    for line in all_the_lines:
        for i in range(lens):
            line = line.replace(a[i], b[i])
        f.write(line)  # 向文件中按行写入替换后的文本
    f.close()
    return


# mode 0/1
# 0表示老到新,1表示新到老,其他则报错提示
# suffix表示指定后缀
def typedef_switch(dirc, old_type, new_type, mode,suffix):
    if mode != 0 and mode != 1:
        print('Mode set error, mode='.format(mode))
        return

    a = []
    b = []
    if mode == 0:
        a = old_type
        b = new_type
    else:
        b = old_type
        a = new_type

    filelist = os.listdir(dirc)
    for file in filelist:
        file_path = os.path.join(dirc, file)
        if os.path.isfile(file_path):
            if os.path.splitext(file_path)[1] == suffix:
                file_process(file_path, a, b)
        elif os.path.isdir(file_path):
            typedef_switch(file_path, old_type, new_type, mode, suffix)

if __name__ == '__main__':
    # an example
    old_type = ['!include <win32.mak>']
    #old_type = ['123456789']
    #输入\\\\要进行特别处理
    new_type = ['!include <C:\\\\\\\\Program Files (x86)\\\\\\\\Microsoft SDKs\\\\\\\\Windows\\\\\\\\v7.1A\\\\\\\\Include\\\\\\\\Win32.mak>']
    #new_type = ['aaa']
    pathFolder = r'D:\\MyProject\\publish\\glut-3.7'
    #pathFolder = r'D:\\MyProject\\publish\\test'
    typedef_switch(pathFolder, old_type, new_type, 0,'.win')
    print('done!')

    # 正式退出main函数进程,以免main函数空跑
    sys.exit()

参考文献

1.Python实践:一键批量替换不同文本字符串

以上是关于批量替换字符串的python实现的主要内容,如果未能解决你的问题,请参考以下文章

python实现markdown文件字段批量替换

python列表,如何批量查找替换

python 查找字符串并将其替换

python 字符串替换问题

python将指定文本中的字符串替换后,生成新的文本文件。

linux中批量替换文本中字符串--转载