首页IT科技python中unicode(python 对unicode字符进行normalized)

python中unicode(python 对unicode字符进行normalized)

时间2025-05-05 11:18:37分类IT科技浏览3284
导读:参考:https://blog.csdn.net/weixin_42401159/article/details/112187778...

参考:https://blog.csdn.net/weixin_42401159/article/details/112187778

  https://cloud.tencent.com/developer/article/1406445

在处理一些自然语言文字的过程中           ,会遇到一些表面很奇怪的现象            。 比如两个单词 人肉眼看着一模一样                  ,但是在计算机中读取出来却表示两者不相等                 。当查看它们的的编码字符的时候      ,发现两者确实也不一样      。

例如:

事实上        ,在Unicode的编码中                  ,经常会有一些特殊字符被编码成多种 Unicode 形式         。例如: 字符 U+00C7 (LATIN CAPITAL LETTER C WITH CEDILLA) 也可以被表示为下面列个字符的组合: U+0043 (LATIN CAPITAL LETTER C) 和 字符U+0327 (COMBINING CEDILLA).

这种情况下多发于那些需要包含音调的字符体系中(例如印地语           、德语                  、西班牙语等)         ,如以下字符"Ç"                 。Unicode体系中     ,即可以用Compose(组合)的形式U+00C7来表示这个字符         。 也可以使用Decompose(分离)分别存储字符(U+0043)本身和音调(U+0327)本身      。

在上面的印地语中                  ,出现问题的主要是因为字符"ज़"            ,该字符下有一个小点  ,表示印地语中的一些音调问题(具体参考 Nuqta)                 。该字符就拥有 Compose 和 Decompose 两种Unicode表示方法                 , 因此才会出现上文中字符不等的例子            。

在Python中               ,我们可以利用 unicodedata.normalize 函数对字符进行标准化   。标准化分为两个方式:

unicodedata.normalize("NFKC", text): Normal form Composition: 将所有的文本标准化为 Compose 形式                 。

unicodedata.normalize("NFKD", text): Normal form Decomposition: 将所有的文本标准化为 Decompose 形式              。

更标准的写法,应该为

import unicodedata def strip_accents(s): return .join(c for c in unicodedata.normalize(NFD, s) if unicodedata.category(c) != Mn)
声明:本站所有文章              ,如无特殊说明或标注                  ,均为本站原创发布。任何个人或组织   ,在未征得本站同意时           ,禁止复制      、盗用        、采集                  、发布本站内容到任何网站         、书籍等各类媒体平台               。如若本站内容侵犯了原著者的合法权益                  ,可联系我们进行处理                 。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
token用途(token的作用)