たとえば、これを実行するstr(bin(66))と が得られます0b1000010が、これを実行すると がstr(bin(66)).strip("0b")得られます100001('0' が欠落していることに注意してください)。
私はストリップ機能を誤用していると思います。
strip文字を両側から取り除きます。lstrip左側から文字のみを削除するために使用します。
In [27]: str(bin(66)).strip("0b")
Out[27]: '100001'
In [28]: str(bin(66)).lstrip("0b")
Out[28]: '1000010'
formatまたは、次のメソッドを使用します。
In [38]: '{:b}'.format(66)
Out[38]: '1000010'
ドキュメントから:
str.strip([chars])
先頭と末尾の文字が削除された文字列のコピーを返します。chars 引数は、 削除する文字セットを指定する文字列です。省略された場合、または None の場合、chars 引数はデフォルトで空白を削除します。chars 引数は接頭 辞または接尾辞ではありません。むしろ、その値のすべての組み合わせが削除されます
それで、str.stripプレフィックスが削除されると考えています"0b"が、そのようには機能しません。単純に and を 2 つの異なる文字と見なし'0'、'b'文字列の先頭と末尾から削除します。str.rstripどちらにも同じことが当てはまり、str.lstrip接頭辞や接尾辞は削除されませんが、個々の文字の組み合わせは削除されます。
例えば:
>>> "0b00101".lstrip("0b") #just an example case, removes more than just "0b"
'101'
もう一つの例:
>>> strs = "foofoofoobarfoo"
>>> strs.lstrip('fo')
'barfoo'
>>> if strs.startswith('fo'): #this works fine
print strs.replace('fo','',1)
...
ofoofoobarfoo
@unutbuによって提案されたソリューションとは別に2進数については、次を試すこともできますslicing:
>>> str(bin(66))[2:]
'1000010'
またはformat:
>>> format(66, 'b')
'1000010'