Unicode and frequency display error

Using python I tried to find the word frequency in a file with text in Unicode and the output is My Code

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)

      

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, '\ 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 \ u093e \ u0908 \ u0930 \ u0939 \ u0947 \ u0915 \ u094b': 1, u '\ u0916 \ u0947 \ u0932 \ u093f \ u0930 \ u0939 \ u915' 1, u '\ ufeff \ u092f \ u094b': 1})

And when I edit the code:

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))

      

Output:

[..., ..., ..., ..., ..., ..., यो]

there is no frequency displayed here.

Expected Result:

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

+3


source to share


1 answer


>>> 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

      

If you are using Python3 it prints correctly and there is no need to iterate over every element. So my advice is to use 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})

      

+1


source







All Articles