从字符串中删除/替换每个第n,第m和第i个字符

Mar*_*rek 0 python python-3.x

删除/替换我的字符串中的每个第n,第m和第i个字符我做错了什么?

''.join('*' if any(i % n == 0 for n in [9, 10, 11]) 
        else char for i, char in enumerate(string))
Run Code Online (Sandbox Code Playgroud)

对于:

string = "100000000111000000001110000000011"
Run Code Online (Sandbox Code Playgroud)

它返回:

*00000000***000000*0*1*0000*00*11
Run Code Online (Sandbox Code Playgroud)

代替:

*00000000***00000000***00000000**
Run Code Online (Sandbox Code Playgroud)

Jak*_*fin 6

你为什么期待*00000000***00000000***00000000**?每个第9,第10和第11个角色将是:

9th: 0, 9, 18...
10th: 0, 10, 20...
11th: 0, 11, 22...
Combined: 0, 9, 10, 11, 18, 20, 22...
Run Code Online (Sandbox Code Playgroud)

事实上*00000000***000000*0*1*0000*00*11,对于提供的字符串.根据您的预期结果,看起来您实际想要做的是屏蔽每11个字符的第1个,第10个和第11个字符(索引0,9和10).试试这个:

>>> ''.join('*' if i % 11 in [0, 9, 10]
...         else char for i, char in enumerate(string))
'*00000000***00000000***00000000**'
Run Code Online (Sandbox Code Playgroud)