补充/否定python中的布尔字符串

时间:2014-02-13 10:26:39

标签: python

我有一个布尔字符串列表。每个字符串的长度为6.我需要得到每个字符串的补码。例如,如果字符串是“111111”,则预期“000000”。我的想法是

bin(~int(s,2))[-6:]
  1. 将其转换为整数,并将其视为二进制数
  2. 来否定它
  3. 将其转换回二进制字符串并使用最后6个字符。
  4. 我认为这是正确的但不可读。它仅适用于长度小于30 的字符串。是否有更好和通用的方式来补充布尔字符串?

    我用谷歌搜索了第三方包"bitstring"。但是,对我的代码来说太过分了。

2 个答案:

答案 0 :(得分:6)

好吧,你基本上有一个字符串,你想要将所有的1改为0,反之亦然。我想我会忘记字符串的布尔含义,只需使用maketrans来制作翻译表:

from string import maketrans

complement_tt = maketrans('01', '10')

s = '001001'
s = s.translate(complement_tt)  # It's now '110110'

答案 1 :(得分:1)

分三步替换:

>>> s = "111111"
>>> s.replace("1", "x").replace("0", "1").replace("x", "0")
'000000'