我有以下字符串用于示例
str = "TESTXXXXX"
我想用一个数字替换每个X,所以输出应该是这样的:
TEST98965
不是:
TEST66666
我制作了以下python脚本来完成这项工作。
from sys import argv
from random import randint
bincode = argv[1].lower()
replaced = bincode.replace('x',str(randint(0,9)))
print replaced
它需要用户输入,并替换每个' x'使用随机数,这里的问题是脚本替换了所有的' x'使用相同的数字,我希望每个' x'要用不同的数字替换,例如,如果用户输入是:
XXX
输出将是这样的:
986
有关如何做到这一点的任何建议吗?
答案 0 :(得分:2)
您可以使用支持功能的re.sub
功能作为替换。
https://docs.python.org/2/library/re.html#re.sub
将为正则表达式模式的每个匹配调用该函数,并且必须生成替换。
s = "TESTXXXXX"
import re
import random
def repl_fun(match):
return str(random.randint(0,9))
replaced = re.sub('X', repl_fun, s)
print replaced
# output example:
# TEST57681
答案 1 :(得分:1)
每次都必须生成一个新的随机整数
from sys import argv
from random import randint
bincode = argv[1].lower()
bc = ''
tgchar= 'x'
for c in bincode:
#print(c) not sure why I put this
if c != tgchar:
bc = bc + (c)
else:
bc = bc + (str(randint(0,9)))
print(bc)