我想要什么
在这个例子中,我想在不使用的情况下查看 unicode 字符串print
:
In [1]: a = u's·A/m'
In [2]: type(a)
Out[2]: str
In [3]: a
Out[3]: 's\xc2\xb7A/m'
In [4]: print a
s·A/m
如何强制字符串__repr__
不显示s\xc2\xb7A/m
,而是显示s·A/m
?
用例是什么?
我有一个代表与其单位相关的数字的类,例如:
class MyNumber(float):
def __new__(cls, ...):
...
def __repr__(self):
return str(self) + str(self.units)
当我在 IPython 中工作时,我想快速查看实例的内容:
>>> a = MyNumber('23.43', ampere=1, second=1, meter=-1)
>>> a
23.43 s·A/m
相反,我得到了一个例外:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 11: ordinal not in range(128)
如果我尝试手动查看我的内容,我__repr__
会得到:
>>>a.__repr__()
23.43 s\xc2\xb7A/m