繁体   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