Python erlaubt Umlaute im Quelltext, Du hast nur keinen Umlaut sondern ein oder mehrere Bytes, die in der Kodierung die Dein Editor benutzt zufällig ein 'ä' darstellen.
Auf jeden Fall musst Du die Kodierung im Quelltext als speziellen "coding"-Kommentar angeben, damit der Compiler nicht meckert.
Und dann musst Du entweder dafür sorgen, dass Du im Quelltext die gleiche Kodierung benutzt wie in den LaTeX-Quelltexten, dann kannst Du Bytes vergleichen die Umlaute darstellen, oder Du musst konsequent mit Unicode arbeiten. Siehe dazu:
[wiki]Unicode[/wiki]
Letzteres ist die sauberere Methode und erlaubt es auch den Quelltext so zu schreiben, dass die Kodierung von LaTeX-Quelltexten und dem Programm-Quelltext nicht zwingend übereinstimmen müssen, ja sogar, dass man die Kodierung der LaTeX-Quelltexte als Argument übergeben kann.
Edit: Und Unicode hat den Vorteil, dass man eine Ersetzungstabelle für die `translate()`-Methode anlegen kann:
Code: Alles auswählen
def main():
translation = dict((ord(old), new)
for old, new in ((u'ä', u'\\"{a}'),
(u'ö', u'\\"{o}')))
print u'Hällö'.translate(translation)
Ausgabe: