首页 > 解决方案 > 在python中解码错误的转义字符

问题描述

所以我有一个有很多名字的数据库。名字有坏字符。例如,记录中的一个名字是José Florés 我想清理这个以获得José Florés

我尝试了以下

name = "    José     Florés "
print(name.encode('iso-8859-1',errors='ignore').decode('utf8',errors='backslashreplace')

输出将姓氏弄乱' José Flor\\xe9s '

解决这个问题的最佳方法是什么?名称可以有任何类型的 unicode 或 hex 转义序列。

标签: pythonpython-3.xstringcharacter-encoding

解决方案


ftfy是一个 python 库,它使用一个名为fix_text.

from ftfy import fix_text

def convert_iso_name_to_string(name):
    result = []

    for word in name.split():
        result.append(fix_text(word))
    return ' '.join(result)

name = "José Florés"
assert convert_iso_name_to_string(name) == "José Florés"

使用该fix_text方法可以将名称标准化,这是解决问题的另一种方法。


推荐阅读