liste mit umlauten in txt speichern

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
Pixilated
User
Beiträge: 16
Registriert: Samstag 27. Juni 2015, 14:09

Hi , weiss jemand reinen Rat wie man den Inhalt einer Liste (Umlaute enthalten) erfolgreich in eine txt speichern kann .
meiner bisherigen erfolglosen Versuche:

# -*- coding: utf-8 -*-
encode(utf-8)

Python 2.6

Code: Alles auswählen

for item in tree:
        thefile.write("%s\n" % item)
    thefile.close

Error Message:
thefile.write("%s\n" % item)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 6: ordinal not in range(128)


Über jeden Tip bin ich sehr dankbar !
BlackJack

@Pixilated: Du musst die Unicode-Zeichenketten halt vorher kodieren. Entweder direkt, selber mit der `encode()`-Methode oder Du lässt Dir von der passenden Funktion im `codecs`-Modul etwas geben um die Ausgabedatei zu „wrappen“ damit das beim Schreiben passiert. (Ich weiss jetzt nicht aus dem Kopf ob's in Python 2.6 das `io`-Modul schon gibt, das wäre dann natürlich besser da einfach `io.open()` mit der gewünschten Kodierung zu verwenden.)

Du schliesst die Datei übrigens nicht in Deinem Beispiel. Man muss die `close()`-Methode auch *aufrufen*. Besser/sicherer wäre es mit der ``with``-Anweisung zu arbeiten.
Pixilated
User
Beiträge: 16
Registriert: Samstag 27. Juni 2015, 14:09

Danke für den Tipp !
hab es wie folgt geändert:

Code: Alles auswählen

with io.open('start.txt', 'wb') as outfile:
            for item in tree:
                outfile.write("%s\n" % item)

Fehlermeldung:
can't write unicode to binary stream
BlackJack

@Pixilated: 'wb' ist falsch und Du hast auch keine Kodierung angegeben. Woher soll Python denn dann wissen *wie* Du die Umlaute gerne kodiert haben möchtest?
Antworten