我有以下代码:
test = "é".encode('utf-8')
print(test)
现在,这会给我们:b'\ xc3 \ xa9',正如所料。现在我实际上将“\ xc3 \ xa9”作为字符串。我怎样才能做到这一点?
我研究了Python中的编码和解码方法,但不幸的是它们没有产生预期的结果。
答案 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