显示unicode和频率时出错

时间:2014-11-13 07:05:04

标签: python unicode

使用python我试图找到带有Unicode文本的文件中单词的频率,输出是 我的代码是

import codecs
file=codecs.open(r'C:\Users\Admin\Desktop\nepalii.txt', 'r', 'UTF-8')
nepalii = list(file.read().split())
from collections import Counter
count = Counter(nepalii)
print(count)
  

计数器({u'\ u091b':5,u'\ u0915 \ u0947 \ u091f \ u093e':5,你'\ u090f \ u0915':5,你'\ u092e \ u093e':4,你' \ u0938 \ u094d \ u0915 \ u0932 \ u0932':3,你'\ u091f \ u0942 \ u092c \ u0941 \ u0932':2,你'\ u092f \ u094b':2,你'\ u0917 \ u093f \ u0924': 2,你'\ u0930 \ u0941':2,你'\ u0915 \ u093f \ u0924 \ u093e \ u092c':2,你'\ u0939 \ u094b':2,你'\ u091b \ u0928 \ u094d': 2,u'\ u091a \ u0909 \ u0930':2,u'\ u0917 \ u0908 \ u0930 \ u0939 \ u0915 \ u0915 \ u094b':2,u'\ u0930 \ u093e \ u092e \ u094d \ u0930 \ u094b': 2,u'\ u092c \ u0933 \ u093f \ u0930 \ u0939 \ u0915 \ u094b':2,u'\ u0915 \ u0947 \ u091f \ u093f':2,你'\ u092e':1,你'\ u0939 \ u0941 \ u0928 \ u094d':1,u'\ u0909 \ u0928 \ u0940':1,u'\ u091c \ u093e \ u0928 \ u094d \ u091b \ u0941':1,u'\ u0917 \ u093e \ u0908 \ u0930 \ u0939 \ u0915 \ u0915 \ u094b':1,   你是:'1,你'\ ufeff \ u092f \ u094b':1})

当我编辑代码时:

import codecs
file=codecs.open(r'C:\Users\Admin\Desktop\nepalii.txt', 'r', 'UTF-8')
nepalii = list(file.read().split())
from collections import Counter
count = Counter(nepalii)
print u'[{}]'.format(u', '.join(count))

输出结果为:

  

[टे,ुल,यो,गित,हरु,छ,किताब,हो,छन्,चउर,गईरहेको,म,राम्रो,मा,केटा,हुन्,बसिरहेको,उनी,एक,केटि,जान्छु,स्कुल,गाईरहेको,खेलिरहेका, यो]

此处不显示频率。

我期望的输出是:

  

[टेबुल:3,यो:4,गित:9,हरु:3,.....................]

1 个答案:

答案 0 :(得分:1)

>>> from collections import Counter
>>> count=Counter({u'\u091b': 5, u'\u0915\u0947\u091f\u093e': 5, u'\u090f\u0915': 5, u'\u092e\u093e': 4, u'\u0938\u094d\u0915\u0941\u0932': 3, u'\u091f\u0947\u092c\u0941\u0932': 2, u'\u092f\u094b': 2, u'\u0917\u093f\u0924': 2, u'\u0939\u0930\u0941': 2, u'\u0915\u093f\u0924\u093e\u092c': 2, u'\u0939\u094b': 2, u'\u091b\u0928\u094d': 2, u'\u091a\u0909\u0930': 2, u'\u0917\u0908\u0930\u0939\u0947\u0915\u094b': 2, u'\u0930\u093e\u092e\u094d\u0930\u094b': 2, u'\u092c\u0938\u093f\u0930\u0939\u0947\u0915\u094b': 2, u'\u0915\u0947\u091f\u093f': 2, u'\u092e': 1, u'\u0939\u0941\u0928\u094d': 1, u'\u0909\u0928\u0940': 1, u'\u091c\u093e\u0928\u094d\u091b\u0941': 1, u'\u0917\u093e\u0908\u0930\u0939\u0947\u0915\u094b': 1, u'\u0916\u0947\u0932\u093f\u0930\u0939\u0947\u0915\u093e': 1, u'\ufeff\u092f\u094b': 1})
>>> for i,j in count.items():print i,':',j
... 
टेबुल : 2
यो : 2
गित : 2
हुन् : 1
जान्छु : 1
हरु : 2
बसिरहेको : 2
छ : 5
उनी : 1
केटि : 2
किताब : 2
हो : 2
गाईरहेको : 1
छन् : 2
चउर : 2
गईरहेको : 2
म : 1
राम्रो : 2
यो : 1
मा : 4
एक : 5
केटा : 5
खेलिरहेका : 1
स्कुल : 3

如果你使用Python3,那么它打印正确,不需要迭代每个项目。所以,我的建议是使用Python3:

>>> print(count)  # Python3
Counter({'एक': 5, 'छ': 5, 'केटा': 5, 'मा': 4, 'स्कुल': 3, 'चउर': 2, 'बसिरहेको': 2, 'गित': 2, 'केटि': 2, 'हरु': 2, 'गईरहेको': 2, 'किताब': 2, 'छन्': 2, 'राम्रो': 2, 'यो': 2, 'टेबुल': 2, 'हो': 2, 'म': 1, 'खेलिरहेका': 1, 'उनी': 1, 'गाईरहेको': 1, '\ufeffयो': 1, 'जान्छु': 1, 'हुन्': 1})