28 votes

unicode() vs. str.decode() pour une chaîne d'octets encodée en utf8 (python 2.x)

Y a-t-il une raison de préférer unicode(somestring, 'utf8') à l'opposé de somestring.decode('utf8') ?

Ma seule pensée est que .decode() est une méthode liée, de sorte que python peut être en mesure de la résoudre plus efficacement, mais corrigez-moi si je me trompe.

24voto

dF. Points 29787

Je préférerais 'something'.decode(...) depuis le unicode n'existe plus dans Python 3.0, tandis que le type text = b'binarydata'.decode(encoding) est toujours valable.

23voto

bruno desthuilliers Points 10061

Il est facile de l'évaluer :

>>> 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
>>> 

Évidemment, unicode() est plus rapide.

Pour information, je ne sais pas d'où vous vient l'impression que les méthodes seraient plus rapides - c'est plutôt le contraire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X