温馨提示:本文翻译自stackoverflow.com,查看原文请点击:list - Cyrillic encoding python 2.7 array
encoding list python python-2.7 unicode

list - 西里尔编码python 2.7数组

发布于 2020-03-29 22:08:59

到目前为止,我的代码:

data = [(u'Rest', u'русский', u'фввв', u'vc'), (u'Rest', u'русский', u'фввв ', u'vc')]
print(data)

结果:

[(u'Rest', u'\u0440\u0443\u0441\u0441\u043a\u0438\u0439', u'\u0444\u0432\u0432\u0432', u'vc'), (u'Rest', u'\u0440\u0443\u0441\u0441\u043a\u0438\u0439', u'\u0444\u0432\u0432\u0432 ', u'vc')]

我希望输出显示西里尔字符,如下所示:

[('Rest', 'русский', 'фввв', 'vc'), ('Rest', 'русский', 'фввв ', 'vc')]

查看更多

提问者
user357670
被浏览
99
CDJB 2020-01-31 19:05

之所以发生这种情况,是因为当我们打印出列表或元组时,列表中元素的表示形式是由元素的__repr__功能而不是其__str__功能定义的。要解决此问题,您可以使用以下代码对字符串进行编码,然后对repr()列表的进行解码

码:

# -*- coding: utf-8 -*-
import sys
data = [(u'Rest', u'русский', u'фввв', u'vc'), (u'Rest', u'русский', u'фввв ', u'vc')]
print repr([tuple(x.encode(sys.stdout.encoding) for x in sl) for sl in data]).decode('string-escape')

出:

[('Rest', 'русский', 'фввв', 'vc'), ('Rest', 'русский', 'фввв ', 'vc')]