Seite 1 von 1
Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 09:03
von BarneyG77
Hallo zusammen,
ich arbeite mich gerade in Python als meine "Alltags"-Skriptsprache ein.
Momentan will ich ein Powershell-Skript gegen ein Python-Skript tauschen. Es funktioniert soweit auch alles nur wenn Umlaute ins Spiel kommen werden diese nicht umgewandelt. Beteffende Codezeile sehen wie folgt aus:
Code: Alles auswählen
empName = empName.upper()
empName = empName.replace(',', ' ')
empName = empName.replace('Ä', 'AE')
empName = empName.replace('Ö', 'OE')
empName = empName.replace('Ü', 'UE')
empName = empName.split(' ')
Das ersetzen von "," und der Split zum Schluß funktionieren, nur die Umlaute bleiben bestehen. Wo liegt hier mein Fehler?
Markus
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 09:09
von Sirius3
Welche Python-Version? Woher kommt empName und welches Encoding hat er? Funktioniert das `upper`?
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 09:12
von /me
Vermutlich sehen die Umlaute in deinen Daten nicht so aus wie du glaubst. Welche Version von Python verwendest du denn? 2.x oder 3.x?
Gib vor dem replace doch mal folgendes aus: type(empName) und repr(tempName). Anhand der Daten kann man mehr sagen.
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 09:43
von BarneyG77
Danke für Eure schnellen Antworten.
- als Version kommt 3.6.2 zum Einsatz
- upper() funktioniert.
- type(empName) liefert <class 'str'>
- repr(empName) liefert 'NACHNAME VORNAME'
- als Coding steht # -*- coding: iso-8859-1 -*- in der ersten Zeile
empName liefert ein varchar Feld aus einer Oracle-Datenbank. Der Name wird korrekt zurück geliefert und wie gesagt upper() und split() funktionieren auch nur eben Replace nicht.
Markus
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 10:36
von Sirius3
Dann gib mal
aus. Werden dort die Umlaute richtig als ein Zeichen ausgegeben?
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 12:21
von BarneyG77
Deine Anweisung gibt folgendes aus:
'ÖXXÜXX XXXXXX' 'Ã\x84'
Das "Ä" wird wohl anderst interpretiert.
empName = empName.replace(u'Ä', u'AE') hatte ich auch schon Erfolglos getestet
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 12:28
von /me
Ist am Anfang des Codes irgendein
Source Code Encoding gesetzt worden? Oder ist keins gesetzt worden, die Datei dann aber nicht im Encoding UTF-8 abgespeichert?
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 12:38
von BarneyG77
Die Zeile mit der Coding-Anweisung war schuld

Läuft jetzt Danke!
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 14:10
von Sirius3
@BarneyG77: Du hast behauptet, die Python-Datei wäre iso-8859-1-codiert, in Wirklichkeit war sie aber UTF8. Durch löschen der Zeile benutzt Du den Default: UTF-8.
Re: Replace mit Umlauten
Verfasst: Mittwoch 28. März 2018, 15:14
von BarneyG77
Ok. Danke.
Ich hatte das ganz am Anfang mal eingefügt da sonst Umlaute in der CMD-Konsole Probleme gemacht hatten.
Ab jetzt steht dann UTF-8 in der Zeile
