python 是否有一个全面的字符替换模块,可以在字符串中查找所有非 ascii 或非 unicode 字符并将它们替换为 ascii 或 unicode 等效项?在编码或解码期间对“忽略”参数的这种安慰是疯狂的,但同样也是如此。在非翻译字符所在的每个地方。
我正在寻找一个能够找到令人讨厌的字符并使它们符合任何要求的标准的模块。我意识到现存的字母和编码的数量使得这有点不可能,但肯定有人尝试过吗?即使是一个初步的解决方案也会比现状更好。
这意味着数据传输的简化是巨大的。
python 是否有一个全面的字符替换模块,可以在字符串中查找所有非 ascii 或非 unicode 字符并将它们替换为 ascii 或 unicode 等效项?在编码或解码期间对“忽略”参数的这种安慰是疯狂的,但同样也是如此。在非翻译字符所在的每个地方。
我正在寻找一个能够找到令人讨厌的字符并使它们符合任何要求的标准的模块。我意识到现存的字母和编码的数量使得这有点不可能,但肯定有人尝试过吗?即使是一个初步的解决方案也会比现状更好。
这意味着数据传输的简化是巨大的。
我不认为你想要什么是真的可能 - 但我认为有一个不错的选择。
unicodedata 有一个“规范化”方法,可以为您优雅地降级文本......
import unicodedata
def gracefully_degrade_to_ascii( text ):
return unicodedata.normalize('NFKD',text).encode('ascii','ignore')
假设您正在使用的字符集已经映射到 unicode - 或者至少可以映射到 unicode - 您应该能够使用此模块将该文本的 unicode 版本降级为 ascii 或 utf-8(它是标准的一部分图书馆也是)
查看任何单个字符并猜测其编码将很难并且可能不是很准确。但是,您可以使用 chardet 来尝试检测整个文件的编码。然后您可以使用字符串 decode() 和 encode() 方法将其编码转换为 UTF-8。
http://pypi.python.org/pypi/chardet
而且 UTF-8 向后兼容 ASCII,所以这没什么大不了的。