批量替换文本的思路

问题描述

简要

  1. 需要遍历大量文件
  2. 将原来文本中的strA1,strA2,strA3, 替换成strB1,strB2,strB3
  3. strAs => strBs 是一一对应的, 保存再 json 文件中

基本思路,使用两层循环

伪代码如下

forEach (strAs 生成 RegexObj)
    forEach (文件列表 => fileStr)
        fileStr.replace(RegexObj, 'g')

个人感想

使用两层循环, 一次次遍历上千个文件???
我还没开始做就否定这种方案, 故上来抛砖引玉

阅读 5.3k
3 个回答

如果是linux环境可以考虑下用sed命令做。

思路可以的,几千个文件算很少的啦。

也可以考虑用sed

sed 's/strA/strB/g' [filein的文件名] > [fileout保存的文件名]

比如test.json文件中

sed 's/strA/strB/g' test.json > test.json

如果用 Python 也很简单,只需遍历一次:

from functools import reduce
handle_list = [(strA1, strB1), (strA2, strB2), (strA3, strB3)]
for index, content in enumerate(content_list):
    # 使用 reduce 和 replace 替换所有需要替换的字符对
    content_list[index] = reduce(lambda x, y: x.replace(*y), [content] + handle_list)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进