python实现txt文件格式转换为arff格式
本文实例为大家分享了python实现txt文件格式转换为arff格式的具体代码,供大家参考,具体内容如下
将文件读取出来的时候默认都是字符型的,所以有转换出来有点问题,但是还是可以用的。
文件要求第一行是你对应的属性名,之后是数字。
importsys importre relationname="" filename="" if(len(sys.argv)<2): print("Usage:\npythonarff.pyMyRelationNamefilename.txt") else: relationname=sys.argv[1] filename=sys.argv[2] classArff: def__init__(self,r,f): self.relationname=rifrisnot""else"MachineLearning" f=fiffisnot""else"MMG_data.txt" self.file1=open(f,'r') self.data=[] self.names=[] self.parseData() self.writeToFile() defparseData(self): firstLine=True forlineinself.file1.readlines(): ifnotfirstLine: try: line=line.replace("\n","") words=line.split("") exceptValueError: print("cantparsefile!!") self.data.append(words) else: firstLine=False line=line.replace("\n","") words=line.split("") self.names=words defgetType(self,value): v="" if(type(value)==type(1)): v="numeric" elif(type(value)==type(1.0)): v="numeric" elif(re.match("[0-9]{4}\-[0-9]{2}\-[0-9]{2}\s[0-9]{2}\:[0-9]{2}\:[0-9]{2}",value)): v="date"+"yyyy-MM-ddHH:mm:ss" elif(type(value)==type("string")): v="string" elif(v==""): print("Datatype"+value+"notsupportedyet.") returnv defwriteToFile(self): values=self.data[0] file2=open("Dexhunter_test_result.arff",'w+') self.relationname+="\n" relationString='@RELATION'+self.relationname file2.write(''+relationString+'') foriinrange(len(self.names)): str2="@ATTRIBUTE"+self.names[i]+""+self.getType(values[i])+"\n" file2.write(''+str2+'') file2.write('''''@DATA\n''') forlineinself.data: try: file2.write(",".join(line)+"\n") exceptUnicodeEncodeError: print("cantwriteDatatofile!!") Arff(relationname,filename)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。