You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python读取包含阿拉伯语、英语的txt格式标注数据集

问题原因

你当前报错的核心原因是trans.arff.txt是ARFF(Weka属性关系文件)格式,并非标准CSV结构,文件头部带有@attribute、@data等元数据定义行,直接用pd.read_csv解析会因为格式不匹配报错。

可行解决方案

方案1:用专用ARFF解析工具读取(推荐,适配性高)

使用scipy内置的ARFF解析模块直接读取,不需要手动处理格式:

from scipy.io import arff
import pandas as pd
import numpy as np

# 读取ARFF文件及元信息
data, meta = arff.loadarff('trans.arff.txt', encoding='utf-8')
df = pd.DataFrame(data)

# 处理ARFF默认返回的bytes类型字符串,转成普通字符串
df = df.apply(lambda col: col.str.decode('utf-8') if col.dtype == object else col)

# 按列拆分,假设第一列为阿拉伯语句子,第二列为英文标签
# 可以先打印meta.names查看实际列名调整索引
arabic_sentences = df.iloc[:, 0].tolist()
en_labels = df.iloc[:, 1].values

方案2:手动过滤头部元数据读取(无需额外依赖)

ARFF格式的有效数据全部在@data标记行之后,可手动过滤头部后拆分:

import numpy as np

arabic_sentences = []
en_labels = []

with open('trans.arff.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()
    # 定位数据段起始位置
    data_start = 0
    for idx, line in enumerate(lines):
        if line.strip().lower() == '@data':
            data_start = idx + 1
            break
    # 遍历解析数据行
    for line in lines[data_start:]:
        line = line.strip()
        if not line:
            continue
        # 按实际分隔符调整,常见为逗号、制表符
        parts = line.split(',')
        arabic_sentences.append(parts[0].strip())
        en_labels.append(parts[1].strip())

# 标签转numpy数组
en_labels = np.array(en_labels)

注意事项

  • 如果出现编码报错,可尝试将encoding参数替换为utf-8-sig适配带BOM头的文件
  • 拆分数据行前可以先打印几行原始数据,确认实际分隔符后调整split参数

内容的提问来源于stack exchange,提问作者Eng.sh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:01