用for循环选择和写出部分列表

时间:2019-01-07 12:44:26

标签: python loops csv for-loop writefile

有一个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

我仍然没有真正的结果,因为到目前为止一切都错了。

2 个答案:

答案 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.groupbystr.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")