#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
повторение списка перемешанных команд до бесконечности.