unicode () и str.decode () для байтовой строки в кодировке utf8 (python 2.x) - PullRequest
28 голосов
/ 13 января 2009

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

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

Ответы [ 2 ]

23 голосов
/ 13 января 2009

Это легко оценить:

>>> 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, я не знаю, откуда у вас впечатление, что методы будут быстрее - это совсем наоборот.

22 голосов
/ 13 января 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...