【发布时间】:2015-08-25 23:27:07
【问题描述】:
我目前在特殊字符的不同 unicode 表示方面遇到了一些问题,尤其是那些带有重音或分音符号等的问题。我编写了一个 python 脚本,它解析多个数据库转储并比较它们之间的值。问题是,在不同的文件中,这些特殊字符的存储方式不同。在某些文件中,这些字符是组合的,而在其他文件中是分解的。由于我希望始终以组合表示形式从转储中提取字符串,因此我尝试添加以下行:
value = unicodedata.normalize("NFC", value)
但是,这仅在某些情况下解决了我的问题。例如,对于变音符号,它按预期工作。然而,像 ë 这样的字符将保留在分解的架构中 (e͏̈)。
我发现,在 e 和分音符号之间有 COMBINING GRAPHEME JOINER-character(U+034F)。这是正常的,还是这可能是我的问题的原因?
有人知道,如何处理这个问题吗?
【问题讨论】:
-
我想说,如果你有 COMBINING GRAPHEME JOINER 那么它的存在是有原因的,但它取决于文本语言(是的,即使是分音符号)。我倾向于认为这不是一个错误,那么您不应该将其删除(除非您想进行 轻松 比较),但您应该询问该语言的母语人士:它也可能存在,因为原始文本处理软件,不是因为语言。
标签: python unicode special-characters normalize