Was ist der beste Weg, um ein String-Objekt mit einem Byte-Objekt zu vergleichen, das sowohl in Python 2 als auch in Python 3 funktioniert? Angenommen, beide sind utf8
. Allgemeiner, wie schreibt man einen Python 2 und Python 3 kompatiblen Vergleich von zwei Objekten, die jeweils ein String, ein Byte oder ein Unicode-Objekt sein können?Zeichenkette mit Bytes vergleichen, die in Python 2 und 3 funktionieren
Das Problem ist, dass "asdf" == b"asdf"
in Python 2 und Falsch in Python True 3
Inzwischen kann man nicht blind kodieren oder dekodieren Objekte, da Strings in Python 2 hat beide encode
und decode
Methoden, aber Strings in Python 3 habe nur Methoden kodieren.
, schließlich isinstance(obj, bytes)
gibt Wahr zurück, für jeden Nicht-Unicode-String in Python 2 und gibt True zurück, um nur Objekte in Python-Bytes 3.
Warum man sich in erster Linie zu vergleichen? –
@ IgnacioVazquez-Abrams Es ist nicht relevant für die Frage. Die Situation, in der ich darauf stoße, besteht darin, die Ausgabe einer digitalen Signaturbibliothek mit einem Schlüssel einer Webanfrage zu vergleichen; Einer ist eine Zeichenkette, während der andere eine Zeichenkette ist. Diese Frage war jedoch ein Versuch, die allgemeinere Situation zu erfassen, da ich hierzu kein Material gefunden habe. – Zags
Aber das ist nicht sehr nützlich in einer allgemeinen Situation. Normalerweise würden Sie die Bytes in Text dekodieren, bevor Sie sie vergleichen. –