SPSSReader reader = new SPSSReader(args[0], null);
Iterator it = reader.getVariables().iterator();
while (it.hasNext())
{
System.out.println(it.next());
}
我正在使用此SPSSReader读取spss文件。在这里,每个字符串都印有一些垃圾字符。
获得的结果:
StringVariable: nameogr(nulltpc{)(10)
NumericVariable: weightppuo(nullf{nd)
DateVariable: datexsgzj(nulllanck)
DateVariable: timeppzb(null|wt{l)
DateVariable: datetimegulj{(null|ns)
NumericVariable: commissionyrqh(nullohzx)
NumericVariable: priceeub{av(nullvlpl)
预期结果:
StringVariable: name (10)
NumericVariable: weight
DateVariable: date
DateVariable: time
DateVariable: datetime
NumericVariable: commission
NumericVariable: price
预先感谢:)
答案 0 :(得分:1)
我不确定,但是看着您的代码,it.next()
返回了一个Variable
对象。
必须有某种方法可以链接到Variable
对象,例如it.next().getLabel()
或it.next().getVariableName()
。 toString()
在对象上并不总是有意义的。检查SPSSReader库中toString()
类的Variable
方法。
答案 1 :(得分:1)
我尝试重新创建问题并发现了相同的内容。
考虑到该库具有许可证(请参见here),我认为这可能是开发人员确保购买许可证的一种方式,因为常规下载仅包含一个演示版作为评估(请参见licensing before the download。
由于该库较旧(该网站的版权为2003-2008,该库的要求为Java 1.2,未使用泛型,使用了Vector等),所以我建议您使用其他库,只要您不受限制到您的问题中使用的那个。
快速搜索后,发现有一个开放源代码的spss阅读器here,也可以通过Maven here获得。
使用github页面上的示例,我将其放在一起:
import com.bedatadriven.spss.SpssDataFileReader;
import com.bedatadriven.spss.SpssVariable;
public class SPSSDemo {
public static void main(String[] args) {
try {
SpssDataFileReader reader = new SpssDataFileReader(args[0]);
for (SpssVariable var : reader.getVariables()) {
System.out.println(var.getVariableName());
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
我找不到能够打印NumericVariable
或类似内容的内容,但是由于这些是您在问题中使用的库的类名,因此我将假定这些内容不是SPSS标准化的。如果是这样,您可以在库中找到类似的内容,也可以在github页面上打开问题。
使用here中的employees.sav
文件,使用开放源代码库,从上面的代码获得了以下输出:
resp_id
gender
first_name
last_name
date_of_birth
education_type
education_years
job_type
experience_years
monthly_income
job_satisfaction
没有其他字符了!
编辑有关评论:
是正确的。虽然我通读了一些SPSS内容,但据我了解,只有字符串和数字变量,然后以不同的方式设置了格式。在maven中发布的版本仅允许您访问变量的类型代码(说实话,不知道这是什么),但是在github版本中(确实不似乎以1.3-不幸的是SNAPSHOT)在引入了write-和printformat之后才开始。
您可以克隆或下载该库并运行mvn clean package
(假设您已安装maven),并在项目中使用生成的库(在target\spss-reader-1.3-SNAPSHOT.jar
下找到)来使用方法SpssVariable#getPrintFormat
和SpssVariable#getWriteFormat
可用。
这些返回一个SpssVariableFormat
,您可以从中获取更多信息。由于我一无所知,因此我能做的最好的就是将您链接到源here,在该源中引用那里实现的内容应该可以进一步帮助您(我认为this link SpssVariableFormat#getType
文档中所引用的内容可能最有助于确定您所使用的格式。
如果绝对没什么用,我想您也可以使用问题中的库的演示版来通过it.next().getClass().getSimpleName()
确定内容,但只有在没有其他方法可以使用时,我才求助于此确定格式。