UTF-8将字节表示为Python中的字符串

时间:2018-01-31 10:16:02

标签: python-3.x utf-8 ascii

我有以下代码:

test = "é".encode('utf-8')
print(test)

现在,这会给我们:b'\ xc3 \ xa9',正如所料。现在我实际上将“\ xc3 \ xa9”作为字符串。我怎样才能做到这一点?

我研究了Python中的编码和解码方法,但不幸的是它们没有产生预期的结果。

1 个答案:

答案 0 :(得分:1)

您可以同时使用repr()str()

# -*- coding: utf-8 -*-
test = "é".encode('utf-8')
print(test)

# using repr()
my_string = repr(test)[2:-1]
print(my_string)

# using str() 
my_string = str(test)[2:-1]
print(my_string)

输出:

b'\xc3\xa9'
\xc3\xa9
\xc3\xa9

只是一点点背景。

repr()函数将调用bytes对象test.__repr__()的{​​{1}}方法。 test函数将调用bytes对象str()的{​​{1}}方法,如果已定义test.__str__(),则会调用test方法。< / p>

这很容易看出,请考虑以下代码:

__str__()

输出:

__repr__()

如果没有定义class MyClass(object): def __init__(self): pass def __repr__(self): return 'repr' def __str__(self): return 'str' m = MyClass() print(str(m)) print(repr(m)) ,请考虑以下代码:

str
repr

输出:

.__str__()

有关class MyClass(object): def __init__(self): pass def __repr__(self): return 'repr' #def __str__(self): # return 'str' m = MyClass() print(str(m)) print(repr(m)) repr repr 的更多信息,请参阅Datamodel documentation