从字符串中移除前缀
我想把二进制数字左边的“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'
这是怎么回事呢?
再次感谢你能用一步简单的操作解决这个问题。(看看我之前的问题)
7 个回答
7
在Python 3.9版本中,你可以使用 bbn.removeprefix('0b1')
这个方法。
(实际上,这个问题在 PEP 616 的背景说明中有提到。)
10
不行。去掉字符的操作会把传入的所有字符都去掉,而不仅仅是字面上的那一串。如果你想去掉固定长度的部分,可以用切片来处理字符串。
12
strip这个家族的函数把传入的参数当作一个字符集合来处理,这个集合里的字符会被去掉。默认情况下,这个集合是“所有的空白字符”。
你想要的效果是:
if strg.startswith("0b1"):
strg = strg[3:]