たとえば、これを実行する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'