2016-06-11 32 views
1

Python 2 strbytes兼容,但在Python 3 strunicode如何使字符串解释为字节?

我正在将一些项目移植到Python3,但支持Python2.7。 这个prodject有许多字符串常量的测试。 '...'.join(...)'...'.format(...)也很少。

如何使Python3变为b'123' == '123'

+3

你不能。相反,显式编码为字节。 –

+0

为了获得从Py2.6到3.x的兼容性,你可以考虑使用'from __future__ import unicode_literals' – John1024

+0

'unicode_literals'我需要重写常量,但我不知道与字节比较,从字符串lib返回的字符串。 – eri

回答

3

在PY3

>>> '123ü'.encode('utf-8') 
b'123\xc3\xbc' 

>>> bytes('123ü', 'utf-8') 
b'123\xc3\xbc' 

但你可能想拥有它周围的其他方法,并使用UTF-8的Py2更容易过渡。使用

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals` 

在Py2中使所有字符串都为u''

+1

我想反转'unicode_literals' – eri