我有一个字符串,例如
x = "aaaaaaaaaa"
我想用"b"代替例如"a"的20%。我试着:
x_new = ''.join(i if random.randint(0, 1) else 'b' for i in x)
但是对于random.randint(0,1)
,我不知道如何获得例如20%的替换。
下面的代码以80%的概率保留原来的a
字符,否则用b
替换它
from random import random
x = "aaaaaaaaaa"
rand_replace = lambda c: c if random()<0.8 and c=='a' else 'b'
x_new = ''.join([rand_replace(c) for c in x])
如果您希望替换的总概率为20%(字符串方向):
rand_replace = lambda c: c if random()<0.8**(1.0/len(x)) and c=='a' else 'b'
x = "aaaaaaaaaa"
x_new = x.replace('a', 'b', int(len(x) * 0.2) )
print x_new