2016-08-09 99 views
-2

Ich habe eine Zeichenfolge in Python:Wie entfernen Sie Teilstrings, die mit Sonderzeichen markiert sind, aus einem String?

Tt = "This is a <\"string\">string, It should be <\"changed\">changed to <\"a\">a nummber." 

print Tt 

'This is a <"string">string, It should be <"changed">changed to <"a">a nummber.' 

Sie sehen die einige Wörter in diesem Teil wiederholen <\" \">.

Meine Frage ist, wie man diese wiederholt Teile löschen (mit den genannten Zeichen begrenzt)?

sollte das Ergebnis wie:

'This is a string, It should be changed to a nummber.' 
+3

zeigen Sie uns Ihren Code. – Julien

+0

Teilen Sie mit uns die Methoden, die Sie bereits ausprobiert haben, ist eine gute Möglichkeit, die Schwierigkeiten auszudrücken, denen Sie gegenüberstehen. Wir können spezifische Bereiche Ihrer problematischen Versuche ansprechen. – Lix

+1

Komm schon! Sie können sich einen besseren Titel einfallen lassen. –

Antwort

5

Verwenden von regulären Ausdrücken:

import re 
Tt = re.sub('<\".*?\">', '', Tt) 

Notiere die ? nach *. Es macht den Ausdruck nicht gierig, , so versucht es, so wenig Symbole zwischen <\" und \"> wie möglich zu paaren.

Die Lösung von James wird nur in den Fällen arbeiten, wenn der Begrenzungsteil nur von einem Charakter (< und >) bestehen. In diesem Fall ist es möglich, Negationen wie zu verwenden. Wenn Sie eine Teilzeichenfolge mit Zeichenfolgen (z. B. mit begin und end) entfernen möchten, sollten Sie nicht-gierige reguläre Ausdrücke (z. B. .*?) verwenden.

1

ich einen schnellen regulären Ausdruck verwenden würde:

import re 
Tt = "This is a <\"string\">string, It should be <\"changed\">changed to <\"a\">a number." 
print re.sub("<[^<]+>","",Tt) 
#Out: This is a string, It should be changed to a nummber. 

Ah - ähnlich wie Igor Post, schlug er mir ein bisschen. Anstatt den Ausdruck nicht gierig zu machen, passe ich keinen Ausdruck an, wenn er ein anderes Start-Tag "<" enthält, so dass nur ein Start-Tag mit einem End-Tag ">" übereinstimmt.

+0

@James: Ich habe ein kleines Update zu meiner Antwort geschrieben, in Bezug darauf, warum oder wann es besser ist, nicht-gierige reguläre Ausdrücke zu verwenden. –