gpt4 book ai didi

python - 在Python中显示西里尔字母

转载 作者:太空宇宙 更新时间:2023-11-03 18:26:19 25 4
gpt4 key购买 nike

假设我的变量中有俄语内容:

msg = '<some russian text here>'
print msg

给了我正确的值,但是

print [msg]

给了我这个:

['\xd0\x9f\xd0\xa4 "\xd0\x9a\xd0\xa2\xd0\x9f-\xd0\xa3\xd1\x80\xd0\xb0\xd0\xbb" (\xd0\x97\xd0\x90\xd0\x9e)']

如何在列表中保留西里尔字母符号?

最佳答案

您不能直接做到这一点,但您可以使用 pprint 非常接近。

https://stackoverflow.com/a/10883893/705086中有示例代码

它仅涵盖 unicode 类型,但可以轻松适应 OP 中的 utf-8 编码的 str/bytes。

理想情况下,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 - 在Python中显示西里尔字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com