python中用于非unicode和非ascii for HTML的综合字符替换模块

时间:2012-10-10 23:33:12

标签: python unicode character-encoding string-decoding

是否有一个全面的字符替换模块用于python,它在字符串中查找所有非ascii或非unicode字符,并用ascii或unicode等效项替换它们?在编码或解码过程中对“忽略”参数的这种舒适感是疯狂的,但同样也是“?”在每个非翻译角色的地方。

我正在寻找一个找到令人讨厌的字符的模块,并将它们符合要求的标准。 我意识到现有的字母和编码数量使得这有点不可能,但是肯定有人对它进行了尝试?即使是初步的解决方案也会比现状更好。

这意味着数据传输的简化是巨大的。

2 个答案:

答案 0 :(得分:4)

我不认为你想要什么是真的可能 - 但我认为有一个不错的选择。

unicodedata有一个'normalize'方法,可以优雅地降级文本...

import unicodedata
def gracefully_degrade_to_ascii( text ):
    return unicodedata.normalize('NFKD',text).encode('ascii','ignore')

假设您正在使用的字符集已映射到unicode - 或者至少可以映射到unicode - 您应该能够使用此模块将该文本的unicode版本降级为ascii或utf-8(它的一部分)也是标准库)

完整文档 - http://docs.python.org/library/unicodedata.html

答案 1 :(得分:0)

要查看任何单个字符并猜测其编码会很难并且可能不太准确。但是,您可以使用chardet尝试检测整个文件的编码。然后,您可以使用字符串decode()和encode()方法将其编码转换为UTF-8。

http://pypi.python.org/pypi/chardet

UTF-8向后兼容ASCII,因此不会有什么大不了的。