Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error in displaying unicode and frequency [duplicate]

Tags:

python

unicode

Using python I tried to find the frequency of words in a file with Unicode text and the output is My code is

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

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

The output is:

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

this does not display frequency here.

The Output I expect is:

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

like image 581
Shristi Baral Avatar asked Feb 04 '26 23:02

Shristi Baral


1 Answers

>>> 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 use Python3, then it prints properly and there is no need to iterate over each item. 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})
like image 73
Irshad Bhat Avatar answered Feb 06 '26 12:02

Irshad Bhat



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!