Ошибка Python, "объект 'module' не имеет атрибута 'lstrip'" - PullRequest
5 голосов
/ 14 января 2011

Документация Python от http://docs.python.org/library/string.html:

string.lstrip(s[, chars])

Возвращает копию строки с удаленными начальными символамиЕсли chars опущено или None, пробельные символы удаляются.Если задано, а не None, chars должно быть строкой;символы в строке будут удалены из начала строки, для которой вызывается этот метод. "

Python 3.1.2 (r312:79360M, Mar 24 2010, 01:33:18) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin
Type "copyright", "credits" or "license()" for more information.
>>> import string
>>> x = 'Hi'
>>> string.lstrip(x,1)
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    string.lstrip(x,1)
AttributeError: 'module' object has no attribute 'lstrip'
>>> 

Чего мне здесь не хватает?

Ответы [ 5 ]

7 голосов
/ 14 января 2011

Документация для версии py3k находится здесь: http://docs.python.org/py3k/index.html

string функции были удалены в py3k, и теперь вы должны использовать str методы :

>>> x = 'Hi'
>>> x.lstrip('H')
'i'

Обратите внимание, что, как сказано в документации, chars должно быть строкой. Не целое число.

3 голосов
/ 14 января 2011

Для Python 2.6 следующие работы ...

import string
x = u'Hi' #needs to be unicode
string.lstrip(x,'H') #second argument needs to be char

Для Python 3.0 предыдущее решение не будет работать, поскольку string.lstrip устарело в 2.4 и удалено в 3.0.

Другой способ сделать:

"Hi".lstrip('H')  #strip a specific char

или

" Hi".lstrip() #white space needs no input param

Что, я думаю, широко распространено в нем.

Редактировать

Чтобы добавить устаревший string.lstrip в Python 3.0 - спасибо за комментарии к этому ответу, которые упоминали об этом.

1 голос
/ 14 января 2011

Вы нашли версию документации на Python 2.7.1 (посмотрите в верхнем левом углу экрана). Функции string были исключены в Python 2.x в пользу методов str и unicode и полностью удалены в Python 3.x. См. 3.x документы здесь .

0 голосов
/ 14 января 2011

Это было изменено для Python 3.x.

Метод, на который вы ссылаетесь, доступен только для строковых экземпляров, но не для модуля string. Поэтому вам не нужно ничего импортировать:

 assert 'a ' == '  a '.lstrip()
0 голосов
/ 14 января 2011

Вы не выглядите хорошим документом, который используете Python 3.1, правильный документ здесь http://docs.python.org/py3k/library/string.html

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