【问题标题】:writing to columns in same row in csv file (python)写入csv文件中同一行的列(python)
【发布时间】:2017-07-05 15:30:03
【问题描述】:

我正在尝试将值写入 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

【问题讨论】:

    标签: python-2.7 csv


    【解决方案1】:

    尝试以下方法:

    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
    

    您从包含数字2 和3 的临时开始。然后,您从0 循环到2(不包括)。在每次迭代中,您将临时索引的值增加当前索引,然后使用临时列表的这些新值创建一个附加列表。完成后,您将两个列表连接在一起并将结果写入您的文件。此时,您可以将临时列表设置为等于附加列表的值,然后再进行下一次迭代。

    我希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      您可以通过简单的种子和增量来呈现它:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-02-19
        • 1970-01-01
        • 2021-05-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-11
        相关资源
        最近更新 更多