首页 > 编程 > Python > 正文

python实现txt文件格式转换为arff格式

2020-02-15 21:35:34
字体:
来源:转载
供稿:网友

本文实例为大家分享了python实现txt文件格式转换为arff格式的具体代码,供大家参考,具体内容如下

将文件读取出来的时候默认都是字符型的,所以有转换出来有点问题,但是还是可以用的。

文件要求第一行是你对应的属性名,之后是数字。

import sys import re  relationname = "" filename = ""  if (len(sys.argv)<2):   print("Usage:/npython arff.py MyRelationName filename.txt") else:   relationname = sys.argv[1]   filename = sys.argv[2]   class Arff:   def __init__(self, r, f):     self.relationname = r if r is not "" else "MachineLearning"     f = f if f is not "" else "MMG_data.txt"     self.file1 = open(f, 'r')     self.data = []     self.names = []     self.parseData()     self.writeToFile()    def parseData(self):     firstLine = True     for line in self.file1.readlines():       if not firstLine:         try:           line = line.replace("/n", "")           words = line.split(" ")         except ValueError:           print("cant parse file!!")         self.data.append(words)       else:         firstLine = False         line = line.replace("/n", "")         words = line.split(" ")         self.names = words    def getType(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-dd HH:mm:ss"     elif(type(value) == type("string")):       v = "string"     elif(v == ""):       print("Data type "+value+" not supported yet.")     return v    def writeToFile(self):     values = self.data[0]     file2 = open("Dexhunter_test_result.arff", 'w+' )      self.relationname+="/n"      relationString = '@RELATION ' + self.relationname     file2.write(''+relationString+'')      for i in range(len(self.names)):       str2 = "@ATTRIBUTE " + self.names[i] + " " + self.getType( values[i] ) + "/n"       file2.write(''+str2+'')     file2.write('''''@DATA/n''')      for line in self.data:       try:         file2.write(",".join(line)+"/n")       except UnicodeEncodeError:           print("cant write Data to file!!")  Arff(relationname, filename) 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持武林站长站。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表