Python — произвольная замена значения в тексте

#python #search #random #replace

#python #Поиск #Случайный #заменить

Вопрос:

У меня есть два файла с открытым исходным кодом, с которыми я возился, один файл представляет собой небольшой макроскрипт, с которым я работаю, второй — текстовый файл, заполненный командами, которые я хотел бы вставить в первый скрипт в случайном порядке в их соответствующих строках. Мне удалось придумать этот скрипт для поиска и замены значений, но не для вставки их в случайном порядке из второго текстового файла.

 def replaceAll(file,searchExp,replaceExp):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
            line = line.replace(searchExp,replaceExp)
        sys.stdout.write(line)

replaceAll('C:/Users/USERACCOUNT/test/test.js','InterSearchHere', RandomValueFrom2ndTXT)
  

Любая помощь, если она будет высоко оценена! Заранее спасибо!

Ответ №1:

 import random
import itertools as it

def replaceAll(file,searchExp,replaceExps):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
            line = line.replace(searchExp,next(replaceExps))
        sys.stdout.write(line)

with open('SecondFile','r') as f:
    replaceExp=f.read().splitlines()
random.shuffle(replaceExps)         # randomize the order of the commands
replaceExps=it.cycle(replaceExps)   # so you can call `next(replaceExps)`

replaceAll('C:/Users/USERACCOUNT/test/test.js','InterSearchHere', replaceExps)
  

Каждый раз, когда вы вызываете next(replaceExps) , вы получаете другую строку из второго файла.

Когда конечный итератор будет исчерпан, next(replaceExps) возникнет StopIteration исключение. Чтобы этого никогда не происходило, я использовал itertools.cycle повторение списка перемешанных команд до бесконечности.