Reguläre Standardausdrücke umgehen

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
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

Hallo ich habe ein kleines Problem:

Ich schreibe gerade eine Art Übersetzungsprogramm --> Wikitext wird in Latex übersetzt

ich würde gern <galler> in \begin{figure}\n\centering umwandeln, doch da das \b als regulärer Ausdruck ne Bedeutung hat, bekomme ich in meinem Latex File immer ^Hegin\{fig.
Die Übersetzungszeile sieht folgendermaßen aus:

Code: Alles auswählen

	itext = re.sub(r'<gallery>' , '\\begin{figure}\\n\\centering', itext, count = 1)
Hat jemand ne Idee, ob ich prinzipiell was falsch mache oder wie ich das umgehen kann?
Danke für jeden Tipp
Mondschein
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

Hallo mondschein!
mondschein hat geschrieben: Die Übersetzungszeile sieht folgendermaßen aus:

Code: Alles auswählen

	itext = re.sub(r'<gallery>' , '\\begin{figure}\\n\\centering', itext, count = 1)
Hat jemand ne Idee, ob ich prinzipiell was falsch mache oder wie ich das umgehen kann?
Das sieht nach dem typischen Doppelescape-Problem aus, obwohl das eigentlich nur bei Patterns auftreten dürfte?

Wenn es das ist, dann wird der String "\\begin..." von PYTHON erstmal als String "\begin..." interpretiert, was dann an re übergeben wird und dort eben anders interpretiert wird.

Dafür gibt es zwei Lösungen:
a) "\\\\begin..." oder
b) r"\\begin..." für eine raw-Eingabe

Das ist reine Spekulation, probier es mal aus.

Gruß,
Michael
Zuletzt geändert von Michael Schneider am Freitag 4. Juli 2008, 11:26, insgesamt 2-mal geändert.
Diese Nachricht zersört sich in 5 Sekunden selbst ...
mondschein
User
Beiträge: 52
Registriert: Dienstag 11. März 2008, 16:35

gracias, das war's ;)
lunar

mondschein hat geschrieben:

Code: Alles auswählen

	itext = re.sub(r'<gallery>' , '\\begin{figure}\\n\\centering', itext, count = 1)
Wofür nutzt du da genau das "re"-Modul? So wie ich das sehe, nutzt du dessen Möglichkeiten nirgends, ergo würde es auch ein einfaches "str.replace" tun:

Code: Alles auswählen

itext.replace('<gallery>', '\\begin{figure}\n\\centering', 1)
Antworten