Umlaute verarbeiten (oder Umwandeln)

  • Hallo,
    Ich hab für meine ersten Gehversuche in Python hab ich ein kleines Skript (nach dieser Anleitung) geschrieben, welches Wetterdaten von Wunderground ausliest und in einer Datei speichert.

    Das Scrpit hat auch einige Tage funktioniert, jedoch bekomme ich seid kurzem fogende Fehlermeldung:

    Code
    osmc@RPI2:~$ sudo /usr/local/bin/Wetter_f.py
    Traceback (most recent call last):
      File "/usr/local/bin/Wetter_f.py", line 33, in <module>
        fobj_out.write(csv)
    UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 153: ordinal not in range(128)


    was wohl an dem Umlaut "ö" bei der Quelle liegt (ausgelesen wird es im Scrpit mit " y= day['conditions']").

    Code
    "conditions":"Regen möglich",

    ist es denn möglich Umlaute bei Python zu verarbeiten?
    Oder (was noch besser wäre), ist es möglich Umlaute automatisch umzuwandeln (z.B. ö zu oe)?

    Edit: ok, habs mit "y= (day['conditions']).encode("utf-8")" hinbekomme (dachte das hätte ich schon ausprobiert....). Somit bleibt nur noch die Frage ob man Umlaute automatisch umwandeln kann? :)

    Gruß,
    H.

    Einmal editiert, zuletzt von Harald654 (24. September 2016 um 19:02)

  • Heißt es nicht

    Code
    # -*- coding: utf-8 -*-

    ?
    Und allgemein, hat nichts mit deinem Problem zu tun: Warum benutzt Du sudo für ein Wetterscript?

    Wenn du nichts zu sagen hast, sag einfach nichts.

    Einmal editiert, zuletzt von llutz (24. September 2016 um 18:58)


  • Heißt es nicht

    Code
    # -*- coding: utf-8 -*-

    ?
    Und allgemein, hat nichts mit deinem Problem zu tun: Warum benutzt Du sudo für ein Wetterscript?

    Auch wenn ich "-*- coding: utf-8 -*-" am Anfang setzt bekomme ich die Fehlermeldung (wenn ich nicht zusätzlich ".encode("utf-8")" einsetze).

    Das sudo wird natürlich nicht benötigt (war ein versehen) :)

  • Hallo,

    Zitat

    uch wenn ich "-*- coding: utf-8 -*-" am Anfang setzt bekomme ich die Fehlermeldung


    Coding gilt nur für die Datei, dass hat _nicht_ damit zu tun, wie Python Daten aus externen Quellen handhabt.

    Zitat

    Somit bleibt nur noch die Frage ob man Umlaute automatisch umwandeln kann?


    So viel Magie gibt es nicht. Da musst du dich selber drum kümmern, mit `encoding()`, wie du schon richtig festgestellt hast.

    Alternativ: Python 3 nutzen, da ist das etwas einfacher geworden.

    Gruß, noisefloor


  • Heißt es nicht

    Code
    # -*- coding: utf-8 -*-

    ?

    Sowohl als auch, es funktioniert beides: https://www.python.org/dev/peps/pep-0263/

    Das gilt aber nur für direkten Text im Script, nicht für "Daten-Ströme" wie es noisefloor bereits erwähnte. Aber ob das mit python3 leichter geworden sein soll? Naja... ;)

    Python2: https://docs.python.org/2/howto/unicode.html
    Python3: https://docs.python.org/3/howto/unicode.html

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!