Sting in einem Anderen finden und ersetzen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Prinzipiell ist meine folgenden Frage gar nicht so schwer.

Jedoch hat mich meine Recherche im Python-Forum und das dazugehörige Googlen zur verunsichert.
Veraltete Varianten. In Zukunft nicht mehr verfügbare Versionen usw. haben mich ein wenig verwirrt.

Es geht mir also nicht um irgendeine Lösung (die würde ich selber hin bekommen), sondern um eine / die Lösung, die ich heute am besten benutze.

In einem String befindet sich ein Stringteil, der mit '!!' beginnt und mit '??' endet.
Zwischen diesen beiden Begrenzungen können unterschiedlich viele Zeichen sein.

Der gefundene String wird dann ausgewertet, und ein weiterer, neuer String erzeugt, der den '!!jlsdfhglsdklhjlkhjdlghjlkjdklghjl??' dann ersetzt.


Ich würde das Problem sehr konservativ angehen.
Aber Python hat bestimmt ganz tolle Funktionen dafür.

Danke.

MrNiceTry
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Reguläre Ausdrücke:
[mod]re[/mod]
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

http://docs.python.org/library/re.html

Code: Alles auswählen

>>> t = """fooo bar !!this has to be replaced?? bar foo"""
>>> import re
>>> pattern = r"!!(.*?)\?\?"
>>> re.sub(pattern, "test", t)
'fooo bar test bar foo'
MrNiceTry
User
Beiträge: 80
Registriert: Samstag 7. November 2009, 10:32

Ja, das dürfte meine Lösung sein.
Ich glaube ich habe gerade den 1. Preis im VielLesenMüssen gewonnen.

Danke für die Unterstützung.

Ich bin dann mal weg ... zum Lesen. :)

MrNiceTry

cofi hat geschrieben:http://docs.python.org/library/re.html

Code: Alles auswählen

>>> t = """fooo bar !!this has to be replaced?? bar foo"""
>>> import re
>>> pattern = r"!!(.*?)\?\?"
>>> re.sub(pattern, "test", t)
'fooo bar test bar foo'
Antworten