根据一个匹配list,批量修改文件里的内容

2021-09-07  本文已影响0人  徐诗芬

list文件里有两列,一列原字符串,一列替换字符串;文件里包含原字符串的内容,根据list替换掉,脚本如下:
python substitute.py list.txt 1.txt 2.txt

list.txt:
a1 b1
a2 b2
a3 b3

1.txt:
sadjsj jsdjs kjk a2
sdkjen fkg a3; skjdo a2
kdjk koefjo llj
akdjsh a1

2.txt 结果输出:
sadjsj jsdjs kjk b2
sdkjen fkg b3; skjdo b2
kdjk koefjo llj
akdjsh b1

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
    author: xushifen
    script: 批量从文件1的list里读取原字符和要替换字符,并输入到pattern里面,逐一替换文件2里的内容
    date:2021.9.7
"""
import sys
import re

def usage():
    print('Usage: python substitute.py [list_file] [in_file] [out_file]')
def read_dt(index):
    dt = {}
    for line in index:
    #这里key为原字符,value为替换字符
        key = line.strip().split("\t")[0]
        dt[key] = line.strip().split("\t")[1]
    return dt

def main():
    index = open(sys.argv[1], 'r')
    inf = open(sys.argv[2], 'r')
    ouf = open(sys.argv[3], 'w')
    dt = read_dt(index)
    lines = inf.readlines()
    for line in lines:
        line = line.strip()
        for old, new in list(dt.items()):
            if old in line:
                line = line.replace(old, new)
            else:
                continue
        ouf.write(line + '\n')
        continue

    index.close()
    inf.close()
    ouf.close()

try:
    main()
except IndexError:
    usage()
上一篇 下一篇

猜你喜欢

热点阅读