Seite 1 von 1

liste mit umlauten in txt speichern

Verfasst: Mittwoch 16. Dezember 2015, 11:38
von Pixilated
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 !

Re: liste mit umlauten in txt speichern

Verfasst: Mittwoch 16. Dezember 2015, 11:58
von 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.

Re: liste mit umlauten in txt speichern

Verfasst: Mittwoch 16. Dezember 2015, 12:17
von Pixilated
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

Re: liste mit umlauten in txt speichern

Verfasst: Mittwoch 16. Dezember 2015, 12:23
von 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?