gpt4 book ai didi

python - UTF-8 转 ISO-8859-1 编码 : replace special characters with closest equivalent

转载 作者:太空宇宙 更新时间:2023-11-03 15:50:26 25 4
gpt4 key购买 nike

有谁知道允许您以智能方式将 UTF-8 字符串转换为 ISO-8859-1 编码的 Python 库?

所谓智能,我的意思是用“-”左右替换“–”等字符。对于许多实在想不出对应物的字符,用“?”代替(就像 encode('iso-8859-1', errors='replace') 那样)。

最佳答案

由于 Unicode 的前 256 个代码点与 ISO-8859-1 匹配,因此可以尝试编码为 ISO-8859-1,这将无误地处理所有字符 0 到 255。对于导致编码错误的字符,可以使用unidecode。

以下适用于 Python 2 和 3:

from builtins import str
import unidecode

def unidecode_fallback(e):
part = e.object[e.start:e.end]
replacement = str(unidecode.unidecode(part) or '?')
return (replacement, e.start + len(part))

codecs.register_error('unidecode_fallback', unidecode_fallback)

s = u'abcdé–fgh💔ijkl'.encode('iso-8859-1', errors='unidecode_fallback')
print(s.decode('iso-8859-1'))

结果:

abcdé-fgh?ijkl

然而,这会将非 ISO-8859-1 字符转换为 ASCII 等效字符,而有时使用非 ASCII、ISO-8859-1 等效字符可能会更好。

关于python - UTF-8 转 ISO-8859-1 编码 : replace special characters with closest equivalent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47181684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com