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

What are the differences between the modules unicode and unicodedata?

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

在下面的 link 中,描述了两个不同的模块来删除重音符号:

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

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

所以想知道这两者有什么区别,推荐使用哪一种。

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

unicode是Python中的一个built-in函数 2.这个函数只是把字符串转成unicode字符串,所以只是编码,不需要存储所有的数据。在 python3 上,所有字符串都是 unicode(有一些特殊性)。现在应该明确定义编码。

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

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

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

所以这取决于具体情况,也许您只需要其他 slug 函数(创建非转义字符串)。使用语言时,请注意不要过度(您可能会创建一个令人反感的词)。