将列表中的每第 n 行写入 csv 文件中的新行
Write every nth line from list to new row in csv file
我有一个包含如下数字的列表:
[20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
我想将列表写入 csv 文件,该文件应如下所示:
20.5, 21.7
23.0, 23.6
24.0, 24.7
所以我列表中的每一行都应该写入 csv 文件的下一行。
现在我的脚本是这样的:
import csv
with open('result.csv','w') as f:
for line in my_list:
f.write("%s\n" % line)
我怎样才能只将第 n 行写为新行,将每 n 行写为新行?
这是一种不使用任何库的简单方法。
import csv
my_list = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
nth_line = 2 #--> You can give other values too.
with open('result.csv','w') as f:
for line in range(len(my_list)):
f.write(str(my_list[line]))
if (line+1) % nth_line == 0:
f.write('\n')
else:
f.write(', ')
通过re-shaping列表,然后一次全部写入:
import csv
data = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
data = [data[x:x+2] for x in range(0, len(data), 2)]
with open("results.csv", "w") as f:
writer = csv.writer(f)
writer.writerows(data)
这也将是奇数长度的单词:
# len = 7
data = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7, 0]
results.csv
20.5,21.7
23.0,23.6
24.0,24.7
0
如果不需要逗号后的space:
import csv
data = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
with open('result.csv','w') as file:
csv.writer(file).writerows(data[i:i + 2] for i in range(0, len(data), 2))
否则:
with open('result.csv','w') as file:
file.writelines(
", ".join(map(str, data[i:i + 2])) + "\n" for i in range(0, len(data), 2)
)
我提出了适用于所有情况的解决方案:
from math import *
my_list = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
values_per_line = 2
with open('result.csv','w') as f:
i = 0
number_of_lines = ceil(len(my_list)/values_per_line)
for line in range(number_of_lines):
for value in range(values_per_line):
if i < len(my_list)-1:
if value == (values_per_line - 1):
f.write("%s" % my_list[i])
else:
f.write("%s, " % my_list[i])
elif i == len(my_list)-1:
f.write("%s" % my_list[i])
i = i + 1
if line != number_of_lines-1:
f.write("\n")
您可以将 values_per_line 更改为您需要的任何内容。
我有一个包含如下数字的列表:
[20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
我想将列表写入 csv 文件,该文件应如下所示:
20.5, 21.7
23.0, 23.6
24.0, 24.7
所以我列表中的每一行都应该写入 csv 文件的下一行。
现在我的脚本是这样的:
import csv
with open('result.csv','w') as f:
for line in my_list:
f.write("%s\n" % line)
我怎样才能只将第 n 行写为新行,将每 n 行写为新行?
这是一种不使用任何库的简单方法。
import csv
my_list = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
nth_line = 2 #--> You can give other values too.
with open('result.csv','w') as f:
for line in range(len(my_list)):
f.write(str(my_list[line]))
if (line+1) % nth_line == 0:
f.write('\n')
else:
f.write(', ')
通过re-shaping列表,然后一次全部写入:
import csv
data = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
data = [data[x:x+2] for x in range(0, len(data), 2)]
with open("results.csv", "w") as f:
writer = csv.writer(f)
writer.writerows(data)
这也将是奇数长度的单词:
# len = 7
data = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7, 0]
results.csv
20.5,21.7
23.0,23.6
24.0,24.7
0
如果不需要逗号后的space:
import csv
data = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
with open('result.csv','w') as file:
csv.writer(file).writerows(data[i:i + 2] for i in range(0, len(data), 2))
否则:
with open('result.csv','w') as file:
file.writelines(
", ".join(map(str, data[i:i + 2])) + "\n" for i in range(0, len(data), 2)
)
我提出了适用于所有情况的解决方案:
from math import *
my_list = [20.5, 21.7, 23.0, 23.6, 24.0, 24.7]
values_per_line = 2
with open('result.csv','w') as f:
i = 0
number_of_lines = ceil(len(my_list)/values_per_line)
for line in range(number_of_lines):
for value in range(values_per_line):
if i < len(my_list)-1:
if value == (values_per_line - 1):
f.write("%s" % my_list[i])
else:
f.write("%s, " % my_list[i])
elif i == len(my_list)-1:
f.write("%s" % my_list[i])
i = i + 1
if line != number_of_lines-1:
f.write("\n")
您可以将 values_per_line 更改为您需要的任何内容。