You need to enable JavaScript to run this app. Jupyter Notebook阿拉伯语情感分析读取CSV报line contains NULL byte错误
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook阿拉伯语情感分析读取CSV报line contains NULL byte错误

故障根因
  • 编码不匹配:阿拉伯语地区生成的CSV通常使用Windows-1256(cp1256)、UTF-16编码,你指定通用UTF-8编码会出现解析异常,触发空字节报错。
  • 存在隐形空字节:文件在下载、跨系统传输、编辑保存过程中被插入了\x00空字符,原生csv.reader无法识别该字符直接抛出错误。
  • BOM头冲突:部分带BOM头的编码文件未指定对应解析参数,会被识别为无效空字节。
修复步骤
  1. 先检测文件真实编码,执行以下代码获取准确编码值:
import chardet
# 二进制读取文件检测编码
with open('Data/train_emoji_ar.csv', 'rb') as f:
    detect_result = chardet.detect(f.read())
print("文件真实编码:", detect_result['encoding'])
  1. 修改read_csv函数,兼容异常字符与对应编码:
def read_csv(filename):
    phrase = []
    emoji = []
    # 把上一步获取到的编码填到encoding参数位置
    with open (filename, encoding='此处替换为你检测到的真实编码', errors='replace') as csvDataFile:
        # 读取全部内容并过滤掉空字节
        file_content = csvDataFile.read().replace('\x00', '')
        csvReader = csv.reader(file_content.splitlines())
        for row in csvReader:
            # 跳过字段不足的异常行避免索引报错
            if len(row) >= 2:
                phrase.append(row[0])
                emoji.append(row[1])

    X = np.asanyarray(phrase)
    Y = np.asanyarray(emoji, dtype=int)

    return X, Y

补充说明:如果检测到的编码是带BOM的UTF-8,直接将encoding参数值替换为utf-8-sig即可。

内容的提问来源于stack exchange,提问作者Abdulmajeed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 04:06:03