2011-01-14 34 views
5

documentazione Python da http://docs.python.org/library/string.html:errore Python, "oggetto 'modulo' non ha alcun attributo 'lstrip'"

string.lstrip(s[, chars])

restituire una copia della stringa con i caratteri iniziali rimossi. Se caratteri viene omesso o None, i caratteri di spaziatura vengono rimossi. Se indicato e non None, caratteri deve essere una stringa; i caratteri della stringa verranno rimossi a partire dall'inizio della stringa questo metodo viene chiamato su."

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

Che cosa mi manca qui?

+0

dovrebbe darvi TypeError come 1 non è char. – Rozuur

risposta

7

Documentazione per la versione py3k si trova qui: http://docs.python.org/py3k/index.html

string funzioni sono state rimosse in py3k e si deve utilizzare ora str methods:

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

nota, che, come dice la documentazione, charsdeve essere una stringa. Non un intero.

+0

e il modulo stringa è deprecato da python 2.5 – Ant

+0

@Ant: il modulo stringa va bene, solo alcune funzioni sono state deprecate. – SilentGhost

+0

ok, quasi tutto;) – Ant

3

Per Python 2.6 le seguenti opere ...

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

Per Python 3.0 la soluzione precedente non funzionerà in quanto string.lstrip è stata sconsigliata a 2.4 e rimosso dalla versione 3.0.

Un altro modo è quello di fare:

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

o

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

che credo sia comune ampiamente uso di esso.

Modifica

Per aggiungere disapprovazione di string.lstrip in Python 3.0 - grazie per i commenti su questa risposta che ne ha parlato.

+0

il tuo 2.6 codice è irrilevante, non credi? – SilentGhost

+1

Inoltre, 'string.lstrip' non è il modo giusto per farlo, dato che è stato deprecato in Python 3 – user225312

+0

Intendi dire che cito Python 2.6? o il primo blocco di codice? –

0

non si guarda il buon dottore si sta utilizzando Python 3.1 il doc destra è qui http://docs.python.org/py3k/library/string.html

+0

perché -1 so che la mia risposta è succinta ma non errata –

+0

non io, ma probabilmente perché il L'URL che hai dato porta al modulo 'stringa', non ai metodi' str' di cui ha bisogno per leggere. –

0

Questo è stato modificato per Python 3.x.

Il metodo a cui si fa riferimento è disponibile solo per istanze di stringa, non il modulo string. Quindi non c'è bisogno di importare nulla:

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

È stato modificato in ** 2.x ** in modo da non dover importare nulla. –

1

Hai trovato la versione di Python 2.7.1 dei documenti (vedi in alto a sinistra dello schermo). Le funzioni string sono state deprecate in Python 2.x in favore dei metodi str e unicode e completamente rimosse in Python 3.x. Vedere i 3.x documenti here.

Problemi correlati