相关疑难解决方法(0)

Python - 处理混合编码文件

我有一个主要是UTF-8的文件,但是一些Windows-1252字符也已经找到了.

我创建了一个表,从Windows-1252(cp1252)字符映射到它们的Unicode对应物,并希望用它来修复错误编码的字符,例如

cp1252_to_unicode = {
    "\x85": u'\u2026', # …
    "\x91": u'\u2018', # ‘
    "\x92": u'\u2019', # ’
    "\x93": u'\u201c', # “
    "\x94": u'\u201d', # ”
    "\x97": u'\u2014'  # —
}

for l in open('file.txt'):
    for c, u in cp1252_to_unicode.items():
        l = l.replace(c, u)
Run Code Online (Sandbox Code Playgroud)

但尝试以这种方式替换会导致引发UnicodeDecodeError,例如:

"\x85".replace("\x85", u'\u2026')
UnicodeDecodeError: 'ascii' codec can't decode byte 0x85 in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

有关如何处理这个问题的任何想法?

python unicode encoding utf-8 windows-1252

16
推荐指数
2
解决办法
1万
查看次数

标签 统计

encoding ×1

python ×1

unicode ×1

utf-8 ×1

windows-1252 ×1