Full example of previous



examples/regex/assembly_process_full.py
import sys
import os
import time
import re

if len(sys.argv) <= 1:
    exit(f"Usage: {sys.argv[0]} INFILEs")

conversion = {
    'R1'  : 'R2',
    'R2'  : 'R3',
    'R3'  : 'R1',
    'R12' : 'R21',
    'R21' : 'R12',
}
#print(conversion)

def replace(mapping, files):
    regex = r'\b(' + '|'.join(mapping.keys()) + r')\b'
    #print(regex)
    ts = time.time()

    for filename in files:
        with open(filename) as fh:
            data = fh.read()
        data = re.sub(regex, lambda match: mapping[match.group(1)], data)
        os.rename(filename, f"{filename}.{ts}")       # backup with current timestamp
        with open(filename, 'w') as fh:
            fh.write(data)

replace(conversion, sys.argv[1:]);