lstrip方法不会产生我想要的东西

时间:2015-05-13 03:04:58

标签: python binary

我正在尝试将十进制转换为二进制数并删除最左侧的0b,以便我可以使用1和0。然而,当二进制文件实际为0时,我成功了。如果你从“0b0”中删除“0b”必须为“0”吗?

但里面没有人物。你可以在输出的最后一行看到它是空的。

发生了什么事?

源代码:

value = [255, 255, 255, 0]
binary = [bin(x) for x in value]
binstring = [str(y) for y in binary]
purebin = []
for x in binstring:
     purebin.append(x.lstrip("0b"))
print(binary)
print(binstring)
print(purebin)

输出:

  

['0b11111111','0b11111111','0b11111111','0b0']

     

['0b11111111','0b11111111','0b11111111','0b0']

     

['11111111','11111111','11111111','']

4 个答案:

答案 0 :(得分:4)

你错误地解释了lstrip是如何工作的。这是文档:https://docs.python.org/2/library/string.html#string.lstrip

基本上,它从开头从字符池中取出,而不仅仅是第一次出现的字符。但是,您尝试做的事情非常简单,只是不要轻视x[2:]

P.S。没有必要进行中间str步骤。 bin给出了一个字符串。

答案 1 :(得分:2)

为什么不采用它们的子串(而不是lstrip)?

a = ['0b11111111', '0b11111111', '0b11111111', '0b0']
map(lambda e: e[2:], a)
Out[2]: ['11111111', '11111111', '11111111', '0']

答案 2 :(得分:1)

@Maltysen已经对这个问题给出了一个很好的答案。作为替代方案,如果您不需要select ... n.Note_Category nc.Code_Description as Note_Category_Description, ... n.Caller_Mood, cm.Code_Description as Caller_Mood_Description, ... from Notes n join Code_Master nc on nc.Code_Id = n.Note_Category join Code_Master cm on cm.Code_Id = n.Caller_Mood ... ,也可以跳过整个0bbin(),并使用str()

format

答案 3 :(得分:0)

我相信正在发生的事情是在' 0b'之后的0。被解释为白色空间并被剥夺。

如果您拨打' 0b00000' .lstrip(' 0b'),您也可以看到此操作,这也将返回空字符串。

我建议您使用语法' 0b0' [2:]这将为您提供' 0b'之后的所有字符。