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

时间:2016-11-10 10:08:16

标签: python string random replace

我有一个字符串,例如

x = "aaaaaaaaaa"

我想替换例如20%的“a”与“b”。我试过了:

x_new = ''.join(i if random.randint(0, 1) else 'b' for i in x) 

但是random.randint(0,1)我不知道如何获得20%的替换。

2 个答案:

答案 0 :(得分:4)

以下代码会将原始a字符的概率保持在80%,否则会将其替换为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'

答案 1 :(得分:0)

x = "aaaaaaaaaa"
x_new = x.replace('a', 'b', int(len(x) * 0.2) )
print x_new