我想要统计以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'''。这些字符串显然*不等于。 –