28 Stimmen

unicode() vs. str.decode() für einen utf8-kodierten Byte-String (Python 2.x)

Gibt es einen Grund dafür, die unicode(somestring, 'utf8') im Gegensatz zu somestring.decode('utf8') ?

Mein einziger Gedanke ist, dass .decode() ist eine gebundene Methode, so dass Python in der Lage sein kann, es effizienter zu lösen, aber korrigieren Sie mich, wenn ich falsch liege.

23voto

bruno desthuilliers Punkte 71921

Es ist leicht, ein Benchmarking durchzuführen:

>>> from timeit import Timer
>>> ts = Timer("s.decode('utf-8')", "s = 'ééé'")
>>> ts.timeit()
8.9185450077056885
>>> tu = Timer("unicode(s, 'utf-8')", "s = 'ééé'") 
>>> tu.timeit()
2.7656929492950439
>>> 

Offensichtlich, unicode() ist schneller.

FWIW, ich weiß nicht, woher Sie den Eindruck haben, dass die Methoden schneller wären - es ist genau das Gegenteil.

23voto

dF. Punkte 70587

Ich würde es vorziehen 'something'.decode(...) da die unicode Typ ist in Python 3.0 nicht mehr vorhanden, während text = b'binarydata'.decode(encoding) ist immer noch gültig.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X