如何将掩码应用于Python中的数字或字符串?

时间:2012-12-25 00:49:13

标签: python

我不知道面具是否只能应用于字符串或数字,所以我将两者都包括在我的标题中(因为我总是可以在两者之间进行翻译)。

假设我有一个掩码mask = '001001',我想以某种方式说“对于掩码中等于1的所有位置,将X应用于另一个字符串中的相同位置”。

例如说我有一个数字123456并且我将该掩码应用于它并且想要将数字设置为0.我得到120450.

如果我没有意义,请道歉。如果我之前的字符串示例不是最好的,请建议一个理想的掩码类型,并使用它来简单地将更改应用于单独的数字/字符串。

1 个答案:

答案 0 :(得分:7)

In [272]: mask = '001001'

In [273]: num=123456

In [274]: "".join(x if y!='1' else '0' for x,y in zip(str(num),mask))
Out[274]: '120450'

如果数字和掩码字符串的长度不同,则使用itertools.izip_longest()

In [277]: mask = '001001'

In [278]: num=12345678

In [279]: "".join(x if y!='1' else '0' for x,y in izip_longest(str(num),mask,fillvalue="#"))
Out[279]: '12045078'