Python和CSV:将所有内容输出到一行

时间:2015-05-18 17:15:48

标签: python csv

所以我编写了一个将元组插入.csv文件的程序。这是代码:

with open('data.csv','a') as out:

        csv_out=csv.writer(out)
        #csv_out.writerow(['Restaurant Name','Change'])
        for x, y in zip(arrayForInitialSpots, arrayForChosenSpots):
            csv_out.writerow(x+y)

它工作正常,因为它输出:

Café A,0,Café B,0
Restaurant A,0,Restaurant B,0
Restaurant C,0,Restaurant D,0
E's Place,0,F's Restaurant,0

但我想要的是将上述内容写在一行中,所以:

Café A,0,Café B,0,Restaurant A,0,Restaurant B,0,Restaurant C,0,Restaurant D,0,E's Place,0,F's Restaurant,0

我该怎么做?我试过.format()r \ n \字符,但它仍然没有做我想做的事情。有什么建议?谢谢!

3 个答案:

答案 0 :(得分:1)

CSV模块的主要用途是 以表格方式获得结果。如果你不想要那个 只需完全跳过csv模块,然后将write直接输出到文件:

with open('data.csv','a') as out:
     starting = True
     for x, y in zip(arrayForInitialSpots, arrayForChosenSpots):
          for item in (x + y):
              if not starting:
                 out.write(", ")
                 starting = False              
              out.write(item + ", ")

- 但是,CSV可以做其他好事,比如正确转义引号 在文本数据本身。如果您需要这些功能,那么就是 在执行输出之前将所有数据压缩到单个列表中:

data = []
for x, y in zip(arrayForInitialSpots, arrayForChosenSpots):
    data.extend(x + y)
with open('data.csv','a') as out:
     csv.writer(out).writerow(data)

NB :根据问题中的示例输出数据和摘要,我无法判断您是否需要" y"用逗号分隔" a"或不 - 只需修改data.append表达式(可能使用两个data.append调用)以满足您的需求。

更新:更改为正确记录O.P.数据,详见评论。 (即使用"扩展"而不是"在第二个片段中附加"以及第一个中的等效更改)

答案 1 :(得分:0)

with open('data.csv','a') as out:
     out.write(', '.join(x+y for x, y in zip(arrayForInitialSpots, arrayForChosenSpots)))

答案 2 :(得分:-1)

lineterminator参数用于编写器类

import sys
import csv

W = csv.writer(sys.stdout, lineterminator=",")
W.writerow(["a", "b", "c"])
W.writerow(["d", "e", "f"])

这有一个缺点,因为输出流终止于'',否则就像您希望的那样工作。