使用 for 循环选择并写出列表的一些部分
picking and writing out some fractions of list with for-loop
有一个 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
我仍然没有真正的结果,因为到目前为止一切都是错误的。
如果我没理解错的话,这应该可行:
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()
第三行的[:-1]
去掉多余的逗号;)
更简洁的方法是使用 and 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")
有一个 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
我仍然没有真正的结果,因为到目前为止一切都是错误的。
如果我没理解错的话,这应该可行:
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()
第三行的[:-1]
去掉多余的逗号;)
更简洁的方法是使用 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")