有一个csv-file
数据集,其中包含一些表格数据。
我想挑选出相同数字的分数。
例如,我有一个列表
a = [1,1,2,2,3,3,4,4,4,5,5,5,5,6]
我想要一个循环,用相同的数字写text-files
file_1.txt包含1,1
file_2.txt包含2,2
file_3.txt包含3,3
file_4.txt包含4,4,4
file_5.txt包含5,5,5,5
file_6.txt包含6
我仍然没有真正的结果,因为到目前为止一切都错了。
答案 0 :(得分:0)
If I understood correctly, this should work:
for x in set(a):
text_file = open("file_"+str(x)+".txt", "w")
text_file.write(((str(x)+',')*a.count(x))[:-1])
text_file.close()
Where that [:-1]
in the third line is to remove extra comma ;)
答案 1 :(得分:0)
一种更清洁的方法是使用itertools.groupby
和str.join
:
from itertools import groupby
for num, group in groupby(a):
filename = "file_%d.txt"%num
with open(filename, 'w') as f:
f.write(",".join(map(str, group)) + "\n")
另一个重要的一点是您should always use the with
statement when reading and writing to files。
使用groupby
假定数据已经排序。另一种方法是使用collections.Counter
:
from collections import Counter
for num, count in Counter(a).items():
filename = "file_%d.txt"%num
with open(filename, 'w') as f:
f.write(",".join([str(num)]*count) + "\n")