Problem mit replace

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
Boldi
User
Beiträge: 32
Registriert: Montag 29. Dezember 2008, 11:02
Wohnort: Erfurt
Kontaktdaten:

Montag 4. Mai 2009, 13:58

ich möchte als Wohnort zB den ort münchen abspeichern, da aber ä,ü & ö im namen nicht vorkommen dürfe, möchte ich diese mit der *.replace methode entfernen.
wohnort=wohnort.replace('ä','ae')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
aber es funktioniert nicht :cry:
wo liegt der fehler?
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 4. Mai 2009, 14:10

Coding-Zeile fehlt:

Code: Alles auswählen

# -*- coding: iso-8859-15 -*-

wohnort = "Bärendorf"
wohnort = wohnort.replace('ä','ae')
print wohnort
Boldi
User
Beiträge: 32
Registriert: Montag 29. Dezember 2008, 11:02
Wohnort: Erfurt
Kontaktdaten:

Montag 4. Mai 2009, 14:17

danke für die wirklich schnelle antowrt :)

aber es geht immer noch nicht...

Code: Alles auswählen

wohnort=wohnort.replace(' ','_')  
wohnort=wohnort.replace('ä','ae')
wohnort=wohnort.replace('ö','oe')
wohnort=wohnort.replace('ü','ue')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)
Ich benutze Python 2.5.1(umstieg aktuell unmöglich)
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Montag 4. Mai 2009, 14:23

"wohnort" ist wahrscheinlich ein unicode string.

probier mal:

Code: Alles auswählen

wohnort=wohnort.replace(u'ä','ae')
http://www.kinderpornos.info
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 4. Mai 2009, 15:10

numerix hat geschrieben:Coding-Zeile fehlt:

Code: Alles auswählen

# -*- coding: iso-8859-15 -*-

wohnort = "Bärendorf"
wohnort = wohnort.replace('ä','ae')
print wohnort
Coding-Zeile bringt nur was für Unicode-Strings.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
BlackJack

Montag 4. Mai 2009, 15:12

@Boldi: Schau Dir mal die `unicode.translate()`-Methode an.
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 4. Mai 2009, 15:26

birkenfeld hat geschrieben:
numerix hat geschrieben:Coding-Zeile fehlt:

Code: Alles auswählen

# -*- coding: iso-8859-15 -*-

wohnort = "Bärendorf"
wohnort = wohnort.replace('ä','ae')
print wohnort
Coding-Zeile bringt nur was für Unicode-Strings.
Ohne Coding-Zeile erhalte ich folgenden Traceback:

Code: Alles auswählen

  File "test.py", line 1
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Mit Coding-Zeile läuft es sauber durch ...
Benutzeravatar
Dill
User
Beiträge: 470
Registriert: Mittwoch 10. Januar 2007, 14:52
Wohnort: Köln

Montag 4. Mai 2009, 15:29

ja klar, aber das ist ja ein anderes problem also das des OP...
http://www.kinderpornos.info
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Montag 4. Mai 2009, 15:36

numerix hat geschrieben: Ohne Coding-Zeile erhalte ich folgenden Traceback:

Code: Alles auswählen

  File "test.py", line 1
SyntaxError: Non-ASCII character '\xe4' in file test.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Mit Coding-Zeile läuft es sauber durch ...
Das schon, aber einen Unicodestring bekommst du trotzdem nicht. Und wenn du dann Bytestrings aus verschieden kodierten Dateien mischt, bekommst du undekodierbaren Salat.
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

Montag 4. Mai 2009, 15:45

Dill hat geschrieben:ja klar, aber das ist ja ein anderes problem also das des OP...
Sicher, das ist längst klar - mein letztes Posting bezog sich auf das, was birkenfeld gepostet hat.

@birkenfeld: Wie sähe denn eine "gute" Lösung aus für meinen konkreten Fall?
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Montag 4. Mai 2009, 17:45

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

wohnort = u"Bärendorf"
wohnort = wohnort.translate({
    ord(u'ä') : u'ae'
})
print wohnort
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Boldi
User
Beiträge: 32
Registriert: Montag 29. Dezember 2008, 11:02
Wohnort: Erfurt
Kontaktdaten:

Dienstag 5. Mai 2009, 14:23

ich danke euch allen, es funktioniert nun problemlos
Antworten