2013-08-30 14 views
6

Ho stringhe con parole separate da punti. Esempio:Python: striscia una parola jolly

string1 = 'one.two.three.four.five.six.eight' 
string2 = 'one.two.hello.four.five.six.seven' 

Come faccio a utilizzare questa stringa in un metodo di pitone, l'assegnazione di una parola come jolly (perché in questo caso ad esempio, la terza parola varia). Sto pensando ad espressioni regolari, ma non so se l'approccio come quello che ho in mente è possibile in Python. Per esempio:

string1.lstrip("one.two.[wildcard].four.") 

o

string2.lstrip("one.two.'/.*/'.four.") 

(so che posso estrarre questo split('.')[-3:], ma sto cercando un modo generale, lstrip è solo un esempio)

risposta

18

Usa re.sub(pattern, '', original_string) per rimuovere la parte corrispondente da stringa originale:

>>> import re 
>>> string1 = 'one.two.three.four.five.six.eight' 
>>> string2 = 'one.two.hello.four.five.six.seven' 
>>> re.sub(r'^one\.two\.\w+\.four', '', string1) 
'.five.six.eight' 
>>> re.sub(r'^one\.two\.\w+\.four', '', string2) 
'.five.six.seven' 

BTW, si sta equivoco str.lstrip:

>>> 'abcddcbaabcd'.lstrip('abcd') 
'' 

str.replace è più appropriato (ovviamente, re.sub, troppo):

>>> 'abcddcbaabcd'.replace('abcd', '') 
'dcba' 
>>> 'abcddcbaabcd'.replace('abcd', '', 1) 
'dcbaabcd' 
+0

Grazie! E alla tua "BTW": esiste la possibilità di rimuovere solo gli "abcd" ordinati nel modo giusto? o è solo questo un caso per regex? – aldorado

+0

@aldorado, ''abcddcbaabcd'.replace (' abcd ',' ', 1)'. '1' significa sostituire solo una volta. – falsetru

+2

@aldorado, ho aggiunto un altro codice che mostra l'utilizzo di esempio di 'str.replace'. – falsetru

Problemi correlati