Python,如何在输出中获得西里尔字母?

Python,如何在输出中获得西里尔字母?,python,utf-8,encode,Python,Utf 8,Encode,如何获得西里尔文而不是u'… 代码是这样的 def openfile(filename): with codecs.open(filename, encoding="utf-8") as F: raw = F.read() do stuff... print some_text 印刷品 >>[u'、u'、u'、u':'、u'\u0432',u''、u'('、u')、u'\u0437',u'\u0456']我不清楚某些文本从何而来(你删掉了代码中的那一部分),所以我不知道

如何获得西里尔文而不是
u'…

代码是这样的

def openfile(filename):
    with codecs.open(filename, encoding="utf-8") as F:
        raw = F.read()
do stuff...
print some_text
印刷品


>>[u'、u'、u'、u':'、u'\u0432',u''、u'('、u')、u'\u0437',u'\u0456']
我不清楚
某些文本
从何而来(你删掉了代码中的那一部分),所以我不知道为什么它会打印为字符列表而不是字符串

但是您应该知道,默认情况下,当您将字符串打印到终端时,Python会尝试将字符串编码为ASCII。如果希望在其他编码系统中对其进行编码,可以明确地执行以下操作:

>>> text = u'\u0410\u0430\u0411\u0431'
>>> print text
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3:
  ordinal not in range(128)
>>> print text.encode('utf8')
АаБб
text=u'\u0410\u0430\u0411\u0431' >>>打印文本 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 UnicodeEncodeError:“ascii”编解码器无法对位置0-3中的字符进行编码: 序号不在范围内(128) >>>打印文本。编码('utf8') АаБб
它看起来像是
一些文本
是unicode对象的列表。当您打印这样一个列表时,它会打印列表中元素的
reprs
。因此,请尝试:

print(u''.join(some_text))

该方法将
some_text
的元素连接在一起,元素之间有一个空格
u'
。结果是一个unicode对象。

u'\unnn'
是字符串文本
u'з'
的ASCII安全版本:

>>> print u'\u0437'
з
但是,只有当您的控制台支持您尝试打印的字符时,才会正确显示此选项。在西欧Windows安装的控制台上尝试上述操作失败:

>>> print u'\u0437'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\encodings\cp437.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u0437' in position 0: character maps to <undefined>
>>打印u'\u0437'
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“C:\Python27\lib\encodings\cp437.py”,第12行,在encode中
返回编解码器.charmap\u encode(输入、错误、编码\u映射)
UnicodeEncodeError:“charmap”编解码器无法对位置0中的字符u'\u0437'进行编码:字符映射到
因为让Windows控制台输出Unicode很棘手,Python2的
repr
函数总是选择ASCII安全文本版本

您的
print
语句输出的是
repr
版本,而不是直接打印字符,因为它们位于字符列表而不是字符串中。如果您在列表的每个成员上打印了
print
,则可以直接输出字符,而不是表示为
u'…'
字符串文本