Python unicode终端输出

时间:2013-05-09 18:21:56

标签: python unicode terminal

请帮助我,我尝试了很多技术,但我不能在屏幕上制作python print utf-8符号。

我只需要读取utf-8编码的标准输入流,计算字符并在屏幕上打印它们的出现次数。

这是我的代码:

import re
from collections import Counter
import sys
import codecs

sys.stdin = codecs.getreader('utf-8')(sys.stdin)
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
chars = re.findall(r'.', sys.stdin.read().lower())
counted_chars = Counter(chars).most_common(20)
print counted_chars

我试过这个

reload(sys)
sys.setdefaultencoding('utf-8')

但这不起作用。我经常在屏幕上看到:

(u'\u043e', 90)

由于某种原因,这些字符(u' \ u043e')不会显示为普通字母。

但如果我在控制台中执行以下操作:

>>> a = u'\u043e'
>>> print a 

一切都很好,我得到了

我做错了什么? 请解释我或指向我正确的链接。我被搜查超过三个小时并没有成功解决我的问题。

非常感谢你。

1 个答案:

答案 0 :(得分:0)

Counter.most_common()返回元组列表,当在Python中打印数据结构时,如元组和列表,任何内部对象都打印其表示(无论repr(x)将返回什么)。

要使用str()代替repr()打印字符,您需要迭代此列表并单独打印,例如:

for char, count in counted_chars:
    print char, count