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

时间:2015-04-06 16:04:06

标签: 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))

有关:

string = "100000000111000000001110000000011"

它返回:

*00000000***000000*0*1*0000*00*11

而不是:

*00000000***00000000***00000000**

1 个答案:

答案 0 :(得分: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...

对于提供的字符串,实际上*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**'