首页 > 解决方案 > 在python 3中读取香港补充字符集

问题描述

我有一个 hkscs 数据集,我试图在 python 3 中读取。下面的代码

encoding = 'big5hkscs'
lines = []
num_errors = 0
for line in open('file.txt'):
    try:
        lines.append(line.decode(encoding))
    except UnicodeDecodeError as e:
        num_errors += 1

它给我带来了错误UnicodeDecodeError: 'utf-8' codec can't decode byte 0xae in position 0: invalid start byte。似乎数据集中有一个代码无法解码的非 utf-8 字符。

我尝试errors = ignore在这一行 添加lines.append(line.decode(encoding, errors='ignore'))

但这并不能解决问题。

有人可以建议吗?

标签: pythonutf-8character-encodingnlp

解决方案


如果文本文件包含使用非默认编码编码的文本,则必须在打开文件时指定编码以避免解码错误:

encoding = 'big5hkscs'
path = 'file.txt'
with open(path, 'r', encoding=encoding,) as f:
    for line in f:
        # do something with line

或者,可以以二进制模式打开文件,然后对文本进行解码:

encoding = 'big5hkscs'
path = 'file.txt'
with open(path, 'rb') as f:
    for line in f:
       decoded = line.decode(encoding)
       # do something with decoded text

在这个问题中,文件在没有指定编码的情况下打开,因此它的内容会使用默认编码自动解码 - 在这种情况下显然是 UTF-8。


推荐阅读