klein- durch großbuchstaben ersetzen bei regex

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
blutigeranfaenger
User
Beiträge: 63
Registriert: Dienstag 4. März 2014, 12:04

Hallo zusammen,
ich möchte via regex aus kleinen Anfangsbuchsten große machen und dann soll das Zeichen "," verschwingen.
Ich möchte z.B. "cis," in "Cis" oder "d," in "D" umwandeln.
Ich hatte mir das so vorgestellt:

Code: Alles auswählen

#!/usr/bin/env python3
import re
tongrosseOktav = re.compile(r"([a-h](is)?(es)?),\s",re.MULTILINE) 
text = "cis, dis, c, e, "
text = re.sub(tongrosseOktav,r"\1 ".capitalize(), text)
print(text)
ich kriege dann
cis dis c e
Die Kommata konnte ich eliminieren, aber wie kann ich den ersten Buchstaben groß machen?
Es wäre nett, wenn mir einer einen Tipp geben könnte.
Danke!
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Ds capitalize wirkt schon auf den String "\1" bevor das \1 durch den Buchstaben ersetzt wird.
Daher brauchst Du eine Funktion:

Code: Alles auswählen

tongrosse_oktav = re.compile(r"([a-h](is|es)?),",re.MULTILINE) 
text = "cis, dis, c, e, "
text = tongrosse_oktav.sub(lambda m: m.group(1).capitalize(), text)
print(text)
Benutzeravatar
ThomasL
User
Beiträge: 1366
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

was soll das denn hier machen?

Code: Alles auswählen

r"\1 ".capitalize()
Edit: Sirius war schneller
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
https://projecteuler.net/profile/Brotherluii.png
blutigeranfaenger
User
Beiträge: 63
Registriert: Dienstag 4. März 2014, 12:04

Hallo zusammen,
vielen Dank für die Hilfe!
lambda, das war der griechische Buchstabe für "l". Für was steht der denn hier?
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

blutigeranfaenger
User
Beiträge: 63
Registriert: Dienstag 4. März 2014, 12:04

Danke,
Werde ich genau studieren!
Antworten