Weka无法读取ARFF文件求助:枚举结束处缺失}(第6行错误)
解决Weka打开ARFF文件时的枚举结构错误
错误原因分析
报错信息java.io.IOException: } expected at end of enumeration, read Token[EOL], line 6明确指向第6行的neighbourhood属性枚举定义——Weka在解析这一行时,没有找到枚举列表结尾的},反而读到了换行符,说明这一行的枚举语法不符合ARFF规范。
修复步骤
检查第6行的枚举格式
打开你的ARFF文件,定位到@ATTRIBUTE neighbourhood这一行:- 确保所有包含空格、特殊字符的枚举值都用双引号正确包裹(比如
"Battery Park City"已经处理正确,但要确认其他类似值格式无误)。 - 确保枚举列表的
}紧跟在最后一个元素之后,不能单独换行。比如要保证Bedford-Stuyvesant}是连续的,中间不能有换行或无效字符。 - 检查枚举元素间的逗号,确保没有遗漏或多余的逗号(开头的
,, 用于表示空值,这个是允许的,但要保证后续元素的逗号分隔逻辑正确)。
- 确保所有包含空格、特殊字符的枚举值都用双引号正确包裹(比如
修复数据部分的空值格式
虽然当前报错不在数据段,但你的数据行里出现了连续逗号(比如第三行的,,,),ARFF中空值的标准写法是?,建议替换避免后续解析出错:
原数据行:3647,4632,Elisabeth,Manhattan,Harlem,40.80902,-73.9419,Private room,150,3,0,,,1,365修改后:
3647,4632,Elisabeth,Manhattan,Harlem,40.80902,-73.9419,Private room,150,3,0,?, ?,1,365
验证修复
修改后重新用Weka打开文件,如果仍有报错,检查其他属性(如host_name、neighbourhood_group)的枚举定义是否存在同样的格式问题。
内容的提问来源于stack exchange,提问作者Noor Sakirah
相关产品推荐
相关产品推荐

