你不能直接这样做,但你可以非常接近pprint
。
有例如代码在https://stackoverflow.com/a/10883893/705086
它仅覆盖的unicode类型,但是可以容易地适用于UTF-8编码的STR /字节如在OP。
理想情况下,pprint应该保持格式化/打印的PDO是一个有效的Python表达式的不变量。链接的代码也可以被破解以保持这种不变。
你可以猴子路径pprint
模块保持这种不变的:
import functools, pprint
def escape(s):
lead = ""
if isinstance(s, unicode):
s = s.encode("utf-8")
lead = "u"
return "%s\"%s\"" % (lead, s.replace("\\", "\\\\").replace("\"", "\\\""))
def patched(f):
if hasattr(f, "_already_patched"):
return f
@functools.wraps(f)
def sub(object, *args, **kwargs):
try:
if isinstance(object, basestring):
return escape(object), True, False
except Exception:
pass
return f(object, *args, **kwargs)
sub._already_patched = True
return sub
pprint._safe_repr = patched(pprint._safe_repr)
pprint.pprint([u"\N{EURO SIGN}", u"\N{EURO SIGN}".encode("utf-8")])
[u"€", "€"]
Python的容器使用'再版()'来表示包含的值;输出仅用于调试*仅*。你是否有*用''引号产生输出,而列表对象的方括号? –
+1 for unicode repr –
@qarma:但这不是一个unicode值。它是一个**字节的字符串**。 –