unicode和unicodedata模块之间有什么区别?

时间:2019-05-08 13:50:44

标签: python unicode python-unicode python-module-unicodedata

我有一个大型数据集,其中包含超过200万行文本数据。现在,我要从字符串中删除重音。

在下面的链接中,描述了两个不同的模块以消除重音:

What is the best way to remove accents in a Python unicode string?

描述的模块是unicodeunicodedata。对我来说,尚不清楚两者之间的区别是什么,很难进行比较,因为我没有很多带有重音符号的行,而且我不知道可以替换哪些重音,而哪些不是。

因此,我想知道两者之间的区别以及建议使用哪一个。

1 个答案:

答案 0 :(得分:1)

只有一个模块:unicodedata,其中包括unicode数据库,因此unicode代码点的名称和属性。

unicode是Python 2中的内置函数。此函数仅将字符串转换为unicode字符串,因此它只是编码,无需存储所有数据。在python3上,所有字符串都是unicode(具有某些特殊性)。现在应该明确定义编码。

在该答案上,您只会看到import unicodedata,因此只能看到一个模块。要删除重音符号,您不仅需要unicode代码点,还不需要有关unicode代码点类型(组合字符)的信息,因此您需要unicodedata

也许您是说unidecode。这是一个特殊的模块,但在标准库之外。它对某些用途可能很有用。这些模块很简单,仅在ASCII域中给出结果。在某些情况下可以这样做,但可能会导致拉丁文书写系统以外的问题。

另一方面,unicodedata对您没有任何帮助。您应该了解unicode并应用正确的过滤器功能(也许知道其他语言的工作原理)。

所以这要视情况而定,也许您只需要其他 slug 函数(以创建非转义的字符串)。在使用语言时,您应该注意不要过度操作(您可能会制造冒犯性的字眼)。