我正在尝试将十进制转换为二进制数并删除最左侧的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','']
答案 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
...
,也可以跳过整个0b
和bin()
,并使用str()
:
format
答案 3 :(得分:0)
我相信正在发生的事情是在' 0b'之后的0。被解释为白色空间并被剥夺。
如果您拨打' 0b00000' .lstrip(' 0b'),您也可以看到此操作,这也将返回空字符串。
我建议您使用语法' 0b0' [2:]这将为您提供' 0b'之后的所有字符。