我想要統計以UTF-8格式保存的Urdu文檔中相同單詞的數量。在python中比較unicode和unicode
所以例如我已經含有3個由空格隔開完全相同詞語文件
خُداوند خُداوند خُداوند
我試圖通過使用以下代碼讀取文件來算的話:
file_obj = codecs.open(path,encoding="utf-8")
lst = repr(file_obj.readline()).split(" ")
word = lst[0]
count =0
for w in lst:
if word == w:
count += 1
print count
但該值計數我得到是1,而我應該得到3.
如何比較Unicode字符串?
lst'打印爲什麼?我有''u'\ u062e \ u0646 \ u062f',u'\ u062e \ u064f \ u062f \ u0627 \ u0648 \ u0646 \ u062f',u'\ u062e \ u064f \ u062f \ u0627 \ u0648 \ u0646 \ u062f']'和那些完全相同(您的代碼工作)。但是如果有任何非規範化的形式,那麼它們將不會完全相同。 –
請參閱[規範化Unicode](http://stackoverflow.com/q/16467479),瞭解使用非規範化代碼點處理Unicode值的正確方法。 –
並刪除'repr()'。你剛剛在字符串的開始和結尾添加了'u''和'''。所以'word'現在是''u'\ u062e \ u0646 \ u062f \ u0648 \ u0646 \ u062f','lst [1]'是''\ u062e \ u064f \ u062f \ u0627 \ u0648 \ u0646 \ u062f' '和'list [2]'是''\ u062e \ u0646 \ u062f \ u0627 \ u0646 \ u062f'''。這些字符串顯然*不等於。 –