2

我正在使用 python 模块requests从一些 API 获取数据,它们都返回 json 数据,这些数据被转换为 dicts。我想要做的是从这些 dicts 中获取一些信息,然后将它们全部转换为 python 字符串,我可以在其中使用stemmingandstring.translate()模块,或者将整个内容转换为这些模块可识别的数据。我不能用 UTF-8 数据做到这一点,而且它正在我的头脑中。有什么解决方案吗?我可以遍历字典并将其转换为 ASCII 吗?

奇怪的是,我正在将 ASCII 字符串与其他函数中的 UTF 数据进行比较(if ASCII-word is in UTF dict: do something),并且效果很好。ASCII 值始终与 UTF-8 数据匹配。我根本无法理解这些编码的东西

4

2 回答 2

3

UTF-8 是 ASCII 的扩展,因为有效的 7 位 ASCII 文本也是有效的 UTF-8 文本,所以如果所有数据实际上都可以用 ASCII 表示,那么无论是 ASCII 还是 UTF-8 都没有任何区别。

如果传入的数据是 UTF-8 编码的,最好的方法是将其解码为 un​​icode 对象。例如,如果您从某个来源读取字符串并将其存储在变量utf8str中,您可以这样做utf8str.decode('utf-8')。然后传递这个 unicode 对象并对 unicode 对象执行所有操作。而不是string.translate你可以使用unicode.translate(假设你指的是那里称为“翻译”的字符串方法)。

如果您的模块无法处理 unicode 字符串,您需要考虑如何处理它。如果您的输入包含无法用 ASCII 表示的字符,您必须决定该怎么做。

于 2012-07-28T23:52:06.873 回答
0

当您确定该函数不支持 Unicode 时,您始终可以转换为 ASCII 近似值:

ascii_string = unicodedata.normalize('NFKD', unicode_string).encode('ascii','ignore') 
于 2012-07-28T23:51:10.880 回答