Python -替换字符串中给定百分比(%)的字符(随机)



我有一个字符串,例如

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

最新更新