2013-08-30 5 views
6

Ich habe Strings mit Wörtern durch Punkte getrennt. Beispiel:Python: Streifen Sie ein Platzhalterwort

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

Wie kann ich diese Zeichenfolge in einem Python Methode verwenden, ein Wort als Platzhalter Zuweisen (da in diesem Fall beispielsweise das dritte Wort unterschiedlich sind). Ich denke an reguläre Ausdrücke, weiß aber nicht, ob der Ansatz, wie ich ihn mir vorstelle, in Python möglich ist. Zum Beispiel:

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

oder

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

(Ich weiß, dass ich diese von split('.')[-3:] extrahieren kann, aber ich bin für eine allgemeine Art und Weise suchen, ist lstrip nur ein Beispiel)

Antwort

18

Verwenden

>>> 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' 
: re.sub(pattern, '', original_string) zum passenden Teil von original_string entfernen BTW

, Sie sind Missverständnisse str.lstrip:

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

str.replace besser geeignet ist (natürlich re.sub auch):

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

Thank you! Und zu deinem "BTW": Gibt es eine Möglichkeit, nur die "abcd" zu entfernen, die richtig geordnet sind? oder ist das nur ein Fall für Regex? – aldorado

+0

@aldorado, ''abcddcbaabcd'.replace (' abcd ',' ', 1)'. "1" bedeutet nur einmal ersetzen. – falsetru

+2

@aldorado, habe ich einen weiteren Code hinzugefügt, der die Beispielverwendung von 'str.replace' zeigt. – falsetru