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)
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。