写入csv文件(python)中同一行的列

时间:2017-07-05 15:30:03

标签: python-2.7 csv

我试图将值写入csv文件,使得每两次迭代,结果在同一行,然后下一个值打印到新行。任何帮助将不胜感激。谢谢! 这就是我到目前为止所做的:

import csv
import math
savePath = '/home/dehaoliu/opencv_test/Engineering_drawings_outputs/'

with open(str(savePath) +'outputsTest.csv','w') as f1:
        writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
        temp = []
 for k in range(0,2):
        temp = []            
       for i in range(0,4):
            a = 2 +i
            b = 3+ i
            list = [a,b]
            temp.append(list)
       writer.writerow(temp)

我现在得到的结果是

[2 3][3 4][4 5][5 6]
[2 3][3 4][4 5][5 6]

但是我想得到这个(没有括号),其中一行中的每个数字都在一个单独的列中:

2 3 3 4
4 5 5 6

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

import csv
import math
savePath = '/home/dehaoliu/opencv_test/Engineering_drawings_outputs/'

with open(str(savePath) +'outputsTest.csv','w') as f1:
        writer=csv.writer(f1, delimiter='\t',lineterminator='\n',)
        temp = [2, 3]
        for i in range(2):
            temp = [x + i for x in temp]
            additional = [y+1 for y in temp]
            writer.writerow(temp + additional)
            temp = additional[:]

这应该返回:

# 2    3    3   4
# 4    5    5   6

首先是包含数字23的临时文件。然后,您从0循环到2(不包括)。在每次迭代时,您都会通过当前索引递增临时值,然后使用临时列表的这些新值创建一个附加列表。完成后,您将两个列表连接在一起并将结果写入您的文件。此时,您可以将临时列表设置为等于附加列表的值,然后再继续下一次迭代。

我希望这会有所帮助。

答案 1 :(得分:0)

你呈现它的方式你可以用一个简单的种子和增量来做到这一点:

import csv
import os

save_path = "/home/dehaoliu/opencv_test/Engineering_drawings_outputs/"

with open(os.path.join(save_path, "outputsTest.csv"), "w") as f:
    writer = csv.writer(f, delimiter="\t", lineterminator="\n")
    temp = [2, 3, 3, 4]  # init seed
    increment = len(temp) // 2  # how many pairs we have, used to increase our seed each row
    for _ in range(2):  # how many rows do you need, any positive integer will do
        writer.writerow(temp)  # write the current value
        temp = [x + increment for x in temp]  # add 'increment' to the elements

导致:

2   3   3   4
4   5   5   6

但如果您的种子是:temp = [2, 3, 3, 4, 4, 5]并且您决定生成4行,它仍会适应:

2   3   3   4   4   5
5   6   6   7   7   8
8   9   9   10  10  11
11  12  12  13  13  14