Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > de.comp.lang.python > #5530

Re: [Python-de] python2 --> python3 : str vs bytes

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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