从字符串中移除前缀

5 投票
7 回答
2602 浏览
提问于 2025-04-16 06:52

我想把二进制数字左边的“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:]

撰写回答