0

请帮助我,我尝试了很多技术,但我无法让 python 在屏幕上打印 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 

一切都很好,我得到了

我究竟做错了什么?请向我解释或指向正确的链接。我已经被搜索了三个多小时,但没有成功解决我的问题。

十分感谢。

4

1 回答 1

0

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

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

for char, count in counted_chars:
    print char, count
于 2013-05-09T18:29:01.387 回答