Seite 1 von 1

klein- durch großbuchstaben ersetzen bei regex

Verfasst: Donnerstag 13. Mai 2021, 18:28
von blutigeranfaenger
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!

Re: klein- durch großbuchstaben ersetzen bei regex

Verfasst: Donnerstag 13. Mai 2021, 18:54
von Sirius3
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)

Re: klein- durch großbuchstaben ersetzen bei regex

Verfasst: Donnerstag 13. Mai 2021, 18:56
von ThomasL
was soll das denn hier machen?

Code: Alles auswählen

r"\1 ".capitalize()
Edit: Sirius war schneller

Re: klein- durch großbuchstaben ersetzen bei regex

Verfasst: Donnerstag 13. Mai 2021, 19:17
von blutigeranfaenger
Hallo zusammen,
vielen Dank für die Hilfe!
lambda, das war der griechische Buchstabe für "l". Für was steht der denn hier?

Re: klein- durch großbuchstaben ersetzen bei regex

Verfasst: Donnerstag 13. Mai 2021, 19:19
von Sirius3

Re: klein- durch großbuchstaben ersetzen bei regex

Verfasst: Donnerstag 13. Mai 2021, 20:08
von blutigeranfaenger
Danke,
Werde ich genau studieren!