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

Python-替换字符串中给定百分比的字符(随机)?,python,string,random,replace,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%的替换率。以下代码以80%的概率保留原始a字符,否则,它将替换为b from random import random x = "aaaaaaaaaa" rand_replace = lambda

我有一根绳子

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%的替换率。

以下代码以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])
从随机导入随机
x=“aaaaaaaaaa”

rand_replace=lambda c:c if random()以下代码以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])
从随机导入随机
x=“aaaaaaaaaa”


rand_replace=lambda c:c如果random()字符串长度*0.2是需要替换的数字?。。在这种情况下,奇数长度字符串会发生什么情况?20%与1/5相同…字符串长度*0.2是需要替换的数字?。。在这种情况下,奇数长度的字符串会发生什么情况?20%与1/5相同…@Uri Goren:非常感谢您完整而快速的回答。@Lily-如果您认为它完全解决了您的问题,您可以接受它。这并不意味着20%的替换率。概率分布并非如您所述的均匀。如果OP希望独立替换每个字符(如她的解决方案所示),则代码应保持不变,如果OP希望整个字符串的总更改概率为20%,则应将
0.8
替换为
(1-0.2)**(len(x))
@Uri Goren:非常感谢。我希望整个字符串发生更改的总概率为20%。@Uri Goren:非常感谢您提供完整而快速的答案。@Lily-如果您认为它完全解决了您的问题,您可以接受它。这并不意味着20%的替换率。概率分布并非如您所述的均匀。如果OP希望独立替换每个字符(如她的解决方案所示),则代码应保持不变,如果OP希望整个字符串的总更改概率为20%,则应将
0.8
替换为
(1-0.2)**(len(x))
@Uri Goren:非常感谢。我希望整个字符串发生变化的总概率为20%。@Uri Goren:谢谢,但我的印象是,在新版本的代码中,前两个字母每次都被替换(即不是随机的)。这是@balakumaran.g的答案,我只是将其格式化为code@balakumaran.g:谢谢,但是Uri Goren的代码(注释中提到的更改)更适合我的目的。@Uri Goren:谢谢,但我的印象是,在新版本的代码中,前两个字母每次都被替换(即不是随机替换)。这是@balakumaran.g的答案,我只是将其格式化为code@balakumaran.g:谢谢,但Uri Goren的代码(评论中提到的变化)更适合我的目的。
x = "aaaaaaaaaa"
x_new = x.replace('a', 'b', int(len(x) * 0.2) )
print x_new