【问题标题】:Python encoding issue?Python编码问题?
【发布时间】:2015-05-31 06:33:30
【问题描述】:

我需要测试某个字符串(例如“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

但是当我对其进行测试时,当我预期其他情况时,我得到了 False。我正在以这种方式打开包含单词的文件:

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

知道我做错了什么吗?

【问题讨论】:

  • 你在哪个平台上?如果这是在 Mac 上,请参阅 UTF-8 and os.listdir()
  • 你的终端中sys.getdefaultencoding()的结果是什么?

标签: python


【解决方案1】:

数据可能未标准化。在比较字符串之前,使用以下命令进行标准化:

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

为了提供更多详细信息,õ 可以是U+00F5 (LATIN SMALL LETTER O WITH TILDE),也可以是U+0062 (LATIN SMALL LETTER B),后跟U+0303 (COMBINING TILDE)。标准化是必要的,这样无论您获得哪种风味,它们都会进行相同的比较。

【讨论】:

    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-15
    • 2013-09-10
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多