【发布时间】:2010-10-01 05:14:00
【问题描述】:
有什么理由更喜欢unicode(somestring, 'utf8') 而不是somestring.decode('utf8')?
我唯一的想法是.decode() 是一个绑定方法,因此python 可能能够更有效地解决它,但如果我错了,请纠正我。
【问题讨论】:
有什么理由更喜欢unicode(somestring, 'utf8') 而不是somestring.decode('utf8')?
我唯一的想法是.decode() 是一个绑定方法,因此python 可能能够更有效地解决它,但如果我错了,请纠正我。
【问题讨论】:
我更喜欢'something'.decode(...),因为unicode 类型在Python 3.0 中不再存在,而text = b'binarydata'.decode(encoding) 仍然有效。
【讨论】:
对其进行基准测试很容易:
>>> 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,我不知道您从哪里得到方法会更快的印象 - 恰恰相反。
【讨论】:
unicode() 比 s.decode() 快约 4 倍
encode的东西吗?需要它来快速散列 unicode 字符串。
hashlib.md5(u"höömaa".encode("utf-8")).hexdigest() 没有编码它会崩溃。我使用mmh3.hash128 生成快速哈希,但encode 会减慢它的速度。