Unicode() vs. str.decode() для закодированной байтовой строки utf8 (python 2.x)
Есть ли какая-то причина предпочесть unicode(somestring, 'utf8')
в отличие от somestring.decode('utf8')
?
Моя единственная мысль состоит в том, что .decode()
является связанным методом, поэтому python может решить его более эффективно, но исправьте меня, если я ошибаюсь.
Ответы
Ответ 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)
остается в силе.