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 
