2012-05-18 13 views
9

Non ho familiarità con espressioni regolari, e sarebbe bello se qualcuno che fornisse una soluzione usando espressioni regolari potesse spiegare la loro sintassi in modo da poterlo applicare a situazioni future.Rimozione della prima visualizzazione della parola da una stringa?

Ho una stringa (es. 'Description: Mary had a little lamb'), e vorrebbe rimuovere 'Description: ' tale che la stringa leggerebbe 'Mary had a little lamb,' ma solo la prima istanza, tale che se la stringa fosse 'Description: Description', la nuova stringa sarebbe 'Description.'

Qualche idea? Grazie!

+0

Do sai che la prima istanza sarà sempre all'inizio della stringa? –

risposta

25

Python str.replace ha un argomento di sostituzione massimo. Quindi, nel tuo caso, fare questo:

>>>mystring = "Description: Mary had a little lamb Description: " 
>>>print mystring.replace("Description: ","",1) 

"Mary had a little lamb Description: " 

L'utilizzo di regex è praticamente identico. In primo luogo, ottenere il vostro regex:

"Description: " 

Poiché Python è abbastanza bella di espressioni regolari, è solo la stringa che si desidera rimuovere in questo caso. Con questo, si desidera utilizzarlo in re.sub, che ha anche una variabile di conteggio:

>>>import re 
>>>re.sub("Description: ","",mystring,count=1) 
'Mary had a little lamb Description: ' 
+1

non è necessario specificare il terzo argomento poiché il valore predefinito è 1 –

+3

@omu_negru No, non lo è. Il valore predefinito è tutte le occorrenze. – jamylak

+0

@omu_negru Non è impostato su 1, per impostazione predefinita su ... Nulla di ciò che immagino. Se non hai il terzo argomento, sostituirà tutte le istanze, non solo la prima. – Josiah

0

Utilizzando regex è sufficiente specificare il parametro di conteggio come 1 in re.sub. Anche se sembra che regex non sia necessario in questo caso.

>>> import re 
>>> text = 'Description: Mary had a little lamb' 
>>> re.sub('Description: ','',text,1) 
'Mary had a little lamb' 
+1

Ah, ok grazie per il tuo aiuto! – zhuyxn

+0

Posso chiedere cosa sta facendo il parametro count? – song0089

+0

@ song0089 Solo 1 sostituzione – jamylak

2

Questa espressione regolare funziona per qualsiasi "parola", non solo "Descrizione:"

>>> import re 
>>> s = 'Blah: words words more words' 
>>> print re.sub(r'^\S*\s', '', s) 
words words more words 
>>> 
+0

Se si volesse rimuovere la prima parola in una stringa, non si userebbe semplicemente "" .join (s.split ("") [1:])? – Josiah

+4

@Josiah, meglio sarebbe 's.partition (" ") [2]'. – Duncan

Problemi correlati