Подтвердить что ты не робот

Unicode() vs. str.decode() для закодированной байтовой строки utf8 (python 2.x)

Есть ли какая-то причина предпочесть unicode(somestring, 'utf8') в отличие от somestring.decode('utf8')?

Моя единственная мысль состоит в том, что .decode() является связанным методом, поэтому python может решить его более эффективно, но исправьте меня, если я ошибаюсь.

4b9b3361

Ответ 1

Легко сравнить его:

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

Очевидно, unicode() быстрее.

FWIW, я не знаю, где у вас создается впечатление, что методы будут быстрее - это совсем наоборот.

Ответ 2

Я бы предпочел 'something'.decode(...), так как тип unicode больше не существует в Python 3.0, а text = b'binarydata'.decode(encoding) остается в силе.