2011-01-14 5 views
5

dokumentacji Python od http://docs.python.org/library/string.html:błąd Python, " 'moduł' obiekt ma atrybut 'lstrip'"

string.lstrip(s[, chars])

zwrócić kopię napisu z czołowymi postaciami usunięte. W przypadku pominięcia znaków, białe znaki są usuwane. Jeśli podany, a nie None, chars musi być łańcuchem; znaki w łańcuchu zostaną usunięte z początku łańcucha metoda ta nazywana jest dalej „.

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' 
>>> 

Co ja tu brakuje?

+0

powinien dać ci TypeError jako 1 nie jest char. – Rozuur

Odpowiedz

7

Dokumentacja dla wersji py3k znajduje się tutaj: http://docs.python.org/py3k/index.html

string funkcje zostały usunięte w py3k i trzeba teraz używać str methods:

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

uwaga, że ​​jak mówi dokumentacja, charsmusi być ciągiem. Nie jest liczbą całkowitą.

+0

i moduł string jest przestarzałe, ponieważ python 2.5 – Ant

+0

@Ant: moduł string jest w porządku, to tylko niektóre funkcje zostały uznane za przestarzałe. – SilentGhost

+0

ok, większość tego;) – Ant

3

dla Pythona 2.6 następujące prace ...

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

Pythona 3,0 Poprzednie rozwiązanie nie działa, ponieważ string.lstrip się przestarzałe w 2,4 i usunięto 3,0.

Innym sposobem jest zrobić:

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

lub

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

co moim zdaniem jest wspólnym szeroko korzystać z niego.

Edit

Aby dodać Wycofanie string.lstrip w Pythonie 3.0 - dzięki za komentarze dotyczące tej odpowiedzi, że o tym nie wspominał.

+0

Twój 2.6 kod jest nieistotny, nie sądzisz? – SilentGhost

+1

Również 'string.lstrip' nie jest właściwym sposobem, ponieważ został przestarzały w Pythonie 3 – user225312

+0

Czy masz na myśli fakt, że wspominam o Pythonie 2.6? lub pierwszy blok kodu? –

0

Nie wyglądasz dobrą doc używasz Pythona 3.1 prawo doc jest tutaj http://docs.python.org/py3k/library/string.html

+0

dlaczego -1 Wiem, że moja odpowiedź jest succint, ale nie jest źle –

+0

nie mnie, ale prawdopodobnie dlatego, że Adres URL, który podałeś, prowadzi do modułu 'string', a nie do metod' str', które musi przeczytać. –

0

Zostało to zmienione dla języka Python 3.x.

Metoda, do której się odwołujesz, jest dostępna tylko dla instancji ciągów, a nie dla modułu string. Więc nie trzeba importować niczego:

assert 'a ' == ' a '.lstrip() 
+0

Został zmieniony w ** 2.x **, więc nie trzeba było importować niczego. –

1

Znalazłeś wersji Pythona 2.7.1 docs (poszukaj w lewym górnym rogu ekranu). Funkcje string zostały zdezaktualizowane w Pythonie 2.x na rzecz metod str i unicode i zostały całkowicie usunięte w Pythonie 3.x. Zobacz dokumentację 3.x here.