Python - 如何使用随机整数替换每个出现的字符串中的相同char

时间:2017-12-05 13:35:07

标签: python

我有以下字符串用于示例

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

有关如何做到这一点的任何建议吗?

2 个答案:

答案 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)