2012-10-14 28 views
20

Qual è il modo più rapido/pulito per rimuovere la prima parola di una stringa? So che posso usare split e poi iterare sull'array per ottenere la mia stringa. Ma sono abbastanza sicuro che non sia il modo migliore per farlo.Rimuovere la prima parola in una stringa Python?

Ps: Sono abbastanza nuovo per Python e non conosco tutti i trucchi.

Grazie in anticipo per il vostro aiuto.

+0

dividere, pop, partecipare? – Prasanth

risposta

48

Penso che il modo migliore è quello di dividere, ma limitarla a una sola spaccatura fornendo maxsplit parametro:

>>> s = 'word1 word2 word3' 
>>> s.split(' ', 1) 
['word1', 'word2 word3'] 
>>> s.split(' ', 1)[1] 
'word2 word3' 
+1

vuole rimuovere la prima parola dalla stringa, quindi il comando dovrebbe essere 'a = a.split ('', 1) [1]' –

+0

@IonutHulub Oh, hai ragione. Modificherò la risposta. – ovgolovin

+0

Come può essere modificato per essere sicuro? – gandolf

0

Presumendo è possibile garantire le parole sono separate da un singolo spazio, str.partition() è ciò che sei cercando.

>>> test = "word1 word2 word3" 
>>> test.partition(" ") 
('word1', ' ', 'word2 word3') 

Il terzo elemento della tupla è la parte desiderata.

3

L'altra risposta genera un'eccezione se la stringa ha solo una parola, che presumo non è ciò che si desidera.

Un modo per farlo è utilizzare la funzione str.partition.

>>> s = "foo bar baz" 
>>> first, _, rest = s.partition(" ") 
>>> rest or first 
'bar baz' 

>>> s = "foo" 
>>> first, _, rest = s.partition(" ") 
>>> rest or first 
'foo' 
11

Una soluzione semplice sarebbe quello:

text = "funny cheese shop" 
print text.partition(' ')[2] # cheese shop 

Tuttavia, che non funziona nel seguente esempio (certamente forzato):

text = "Hi,nice people" 
print text.partition(' ')[2] # people 

Per gestire questo, sei avremo bisogno di espressioni regolari:

import re 
print re.sub(r'^\W*\w+\W*', '', text) 

Più in generale, è impossibile rispondere a una domanda che coinvolge "parola" senza sapere di quale linguaggio naturale stiamo parlando. Quante parole è "J'ai"? Che ne dici di "中华人民共和国"?

Problemi correlati