Это ошибка в Python 2.7? - PullRequest
       5

Это ошибка в Python 2.7?

4 голосов
/ 10 ноября 2010

Попытка удалить "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'

В чем дело?

Еще раз спасибо за решение этой проблемыодин простой шаг.(см. мой предыдущий вопрос)

Ответы [ 5 ]

13 голосов
/ 10 ноября 2010

Семейство полос обрабатывает arg как набор символов, которые необходимо удалить.По умолчанию установлено «все пробельные символы».

Вы хотите:

if strg.startswith("0b1"):
   strg = strg[3:]
12 голосов
/ 10 ноября 2010

Нет.Разбор удаляет все символы в переданной последовательности, а не только буквальную последовательность.Нарежьте строку, если вы хотите удалить фиксированную длину.

0 голосов
/ 11 ноября 2010

@ Harryooo: lstrip снимает только символы с левой стороны. Таким образом, поскольку перед первым 0 стоит только 1, он удаляет это. Если номер начинался с 0b11100101..., то при вызове a.strip('0b').strip('1') удаляются первые три, поэтому у вас останется 00101.

0 голосов
/ 11 ноября 2010

Lstrip удаляет любой символ в строке. Таким образом, как и начальный 0b1, он удаляет все нули и все. Отсюда все прошло!

0 голосов
/ 10 ноября 2010

Так работает lstrip.Он удаляет любые символов в параметре, не обязательно строку в целом.В первом примере, поскольку входные данные состояли только из этих символов, ничего не осталось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...