尝试从二进制数的左端剥离“0b1”。
以下代码导致剥离所有二进制对象。 (不好)
>>> bbn = '0b1000101110100010111010001' #converted bin(2**24+**2^24/11)
>>> aan=bbn.lstrip("0b1") #Try stripping all left-end junk at once.
>>> print aan #oops all gone.
''
所以我分两步完成了.lstrip():
>>> bbn = '0b1000101110100010111010001' # Same fraction expqansion
>>> aan=bbn.lstrip("0b")# Had done this before.
>>> print aan #Extra "1" still there.
'1000101110100010111010001'
>>> aan=aan.lstrip("1")# If at first you don't succeed...
>>> print aan #YES!
'000101110100010111010001'
这是什么交易?
再次感谢您通过一个简单的步骤解决这个问题。 (见我之前的问题)
答案 0 :(得分:13)
条形系列将arg视为要删除的设置字符。默认设置为“所有空白字符”。
你想:
if strg.startswith("0b1"):
strg = strg[3:]
答案 1 :(得分:12)
没有。剥离会删除传递的序列中的所有字符,而不仅仅是文字序列。如果要删除固定长度,请剪切字符串。
答案 2 :(得分:2)
In Python 3.9,您可以使用ssh.github.com
。
答案 3 :(得分:0)
这是lstrip
的工作方式。它会删除参数中任何字符,而不一定是整个字符串。在第一个例子中,由于输入只包含那些字符,所以没有留下任何东西。
答案 4 :(得分:0)
Lstrip正在删除字符串中的任何字符。因此,除了最初的0b1之外,它还删除了所有零和所有零。因此一切都消失了!
答案 5 :(得分:0)
@Harryooo:lstrip只接受左手边的字符。所以,因为在第一个0之前只有一个1,所以它会删除它。如果号码开始为0b11100101...
,则调用a.strip('0b').strip('1')
会删除前三个号码,因此您将留下00101
。
答案 6 :(得分:0)
>>> i = 0b1000101110100010111010001
>>> print(bin(i))
'0b1000101110100010111010001'
>>> print(format(i, '#b'))
'0b1000101110100010111010001'
>>> print(format(i, 'b'))
'1000101110100010111010001'
来自标准文档 (See standard documentation for function bin()): 箱(x) 将整数转换为以“0b”为前缀的二进制字符串。结果是一个有效的 Python 表达式。如果 x 不是 Python int 对象,则它必须定义一个返回整数的 index() 方法。一些例子:
>>> bin(3)
'0b11'
>>> bin(-10)
'-0b1010'
如果需要前缀“0b”,您可以使用以下任一方式。
>>> format(14, '#b'), format(14, 'b')
('0b1110', '1110')
>>> f'{14:#b}', f'{14:b}'
('0b1110', '1110')
另见 format() 了解更多信息。