簡體   English   中英

為什么Python刪除字符串的最后一個字符?

[英]Why does Python remove the last character of a string?

例如,如果我這樣做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'

來自docs

str.strip([chars])

返回刪除了前導和尾隨字符的字符串副本。 chars參數是一個字符串,指定要刪除的字符集 如果省略或None,則chars參數默認為刪除空格。 chars參數不是 前綴后綴 ; 相反,它的所有值組合都被剝離了

所以,你認為str.strip將刪除前綴"0b" ,但它不會那樣工作。 它只是將'0''b'視為兩個不同的字符,並將它們從字符串的開頭和結尾刪除。 同樣的事情適用於str.rstripstr.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建議的解決方案之外的二進制數,您還可以嘗試slicing

>>> str(bin(66))[2:]
'1000010'

format

>>> format(66, 'b')
'1000010'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM