Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > de.comp.lang.python > #5530
| From | Stefan Behnel <python-de@behnel.de> |
|---|---|
| Newsgroups | de.comp.lang.python |
| Subject | Re: [Python-de] python2 --> python3 : str vs bytes |
| Date | 2019-08-25 10:44 +0200 |
| Message-ID | <mailman.41.1566723043.30344.python-de@python.org> (permalink) |
| References | <qjtf7q$p8s$1@news2.informatik.uni-stuttgart.de> <07330df3-6eec-a92c-40c5-71634b718f33@behnel.de> |
Ulli Horlacher schrieb am 25.08.19 um 10:00: > TypeError: sequence item 0: expected str instance, bytes found > > Wie macht mans besser? Grundregel: die Eingabedaten immer gleich beim Einlesen dekodieren und erst beim Ausgeben wieder kodieren, damit du innerhalb deines Programmes überall mit Unicode (sprich: Text) arbeiten kannst. Das Dekodieren erledigt Python (3) oft auch automatisch, z.B. wenn du von stdin oder aus einer UTF8-Textdatei (oder JSON/XML/...) liest. Alles andere musst du aber explizit einstellen, z.B. bei "open()" mit der "encoding=..." Option. Das Kodieren passiert z.B. beim Schreiben nach stdout (oder stderr) auch automatisch, in anderen Fällen musst du es aber explizit machen, insbesondere beim Schreiben in Dateien, denn Python kann nicht wissen, ob du die Datei in UTF-8 oder EBCDIC kodiert haben möchtest. In deinem Fall liegt das Problem also überhaupt nicht an der Stelle, an der du den Fehler bekommst, sondern irgendwo vorher, wo du Daten in Bytes einliest, ohne sie zu dekodieren. Python 3 macht den Programmfehler offensichtlich, den Python 2 früher so halbwegs unter den Teppich gekehrt hat (und der dadurch öfter mal nach Jahren noch zu unschönen Überraschungen geführt hat). Stefan
Back to de.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
python2 --> python3 : str vs bytes Ulli Horlacher <framstag@rus.uni-stuttgart.de> - 2019-08-25 08:00 +0000
Re: python2 --> python3 : str vs bytes Hermann Riemann <nospam.ng@hermann-riemann.de> - 2019-08-25 10:20 +0200
Re: [Python-de] python2 --> python3 : str vs bytes Stefan Behnel <python-de@behnel.de> - 2019-08-25 10:44 +0200
Re: [Python-de] python2 --> python3 : str vs bytes Hermann Riemann <nospam.ng@hermann-riemann.de> - 2019-08-26 07:03 +0200
csiph-web