我有一个文本文件,其中包含以下形式的数据;
100157 100157
100157 364207
100157 38848
100157 bradshaw97introduction
100157 bylund99coordinating
100157 dix01metaagent
100157 gray99finding
...
...
我正试图使用以下方法将其转换为scikit可读数据集:
datafile = open(filename.txt, 'r')
data=[]
for row in datafile:
data.append(row.strip().split('t'))
c1 = open(filename.csv, 'w')
arr = str(data)
c.write(arr)
c.close
然而,在执行完这段代码后,数据会在一行中输出,而我打算将数据以csv格式整齐地分为行和列,就像Iris数据集一样。
我能得到一些关于如何进行的帮助吗?谢谢
使用csv
模块:
import csv
with open('filename.txt', 'r') as f, open('filename.csv', 'w') as fout:
writer = csv.writer(fout)
writer.writerows(line.rstrip().split('t') for line in f)
输出csv文件:
100157,100157
100157,364207
100157,38848
100157,bradshaw97introduction
100157,bylund99coordinating
100157,dix01metaagent
100157,gray99finding
...
如果我错了,请纠正我,但我认为scikit readable dataset
只是用空间分隔的值,n
分隔行?
如果是这样的话,很容易:
假设你有这个文件:
100157 100157
100157 364207
100157 38848
100157 bradshaw97introduction
100157 bylund99coordinating
100157 dix01metaagent
100157 gray99finding
用制表符分隔。
您可以很容易地将其转换为空格分隔的新行分隔值:
with open('/tmp/test.csv', 'r') as fin, open('/tmp/test.out', 'w') as fout:
data=[row.strip().split('t') for row in fin]
st='n'.join(' '.join(e) for e in data)
fout.write(st)
print data
# [['100157', '100157'], ['100157', '364207'], ['100157', '38848'], ['100157', 'bradshaw97introduction'], ['100157', 'bylund99coordinating'], ['100157', 'dix01metaagent'], ['100157', 'gray99finding']]
print st
100157 100157
100157 364207
100157 38848
100157 bradshaw97introduction
100157 bylund99coordinating
100157 dix01metaagent
100157 gray99finding