Python - заменить значение в тексте наугад - PullRequest
0 голосов
/ 16 октября 2011

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

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 Ответ

1 голос
/ 16 октября 2011
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, чтобы список перемешанных команд повторялся до бесконечности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...