所以我编写了一个将元组插入.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 \字符,但它仍然没有做我想做的事情。有什么建议?谢谢!
答案 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"])
这有一个缺点,因为输出流终止于'',否则就像您希望的那样工作。