Python编码问题?

时间:2015-05-30 14:21:55

标签: python

我需要测试某个字符串(例如'võiks')是否等于目录中包含的任何文件的名称。

>>>words = [ f.replace('.html', '') for f in listdir('lemma_pages/test') if isfile(join('lemma_pages/test',f)) ]

>>>words
['võibolla', 'võid', 'võiks', 'võimalik', 'võin', 'võta', 'võtan', 'võtta']

>>>'võiks' in words
False

但是当我测试它时,如果我没想到,我会得到假。我以这种方式打开包含单词的文件:

open('et_500.txt', 'rt', encoding="utf-8")

对我做得不对的任何想法?

1 个答案:

答案 0 :(得分:2)

数据可能未正常化。在比较字符串之前,请使用以下标准化:

data = unicodedata.normalize('NFC', data)

要提供更多详细信息,õ可以是U+00F5 (LATIN SMALL LETTER O WITH TILDE),也可以是U+0062 (LATIN SMALL LETTER B),然后是U+0303 (COMBINING TILDE)。规范化是必要的,这样无论你得到什么味道,它们都会相同地进行比较。