Python - 随机替换文本中的值

时间:2011-10-15 20:08:32

标签: python search random replace

我有两个我一直在搞乱的开源文件,一个文件是我正在使用的一个小宏脚本,第二个是填充了命令的txt文件我想插入到第一个脚本中各自行内的随机顺序。我已设法提出这个脚本来搜索和替换值,但不是从第二个txt文件中以随机顺序插入它们。

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 个答案:

答案 0 :(得分: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使洗牌命令列表无限重复。