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

2024-05-16 09:23:17 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我编写了一个程序,将元组插入到.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\字符,但它仍然没有做我想做的事情。有什么建议吗?谢谢!你知道吗


Tags: 文件csv代码程序dataaswithplace
3条回答

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.数据,详见注释。(即在第二个代码段中使用“extend”而不是“append”,在第一个代码段中使用等效的更改)

对writer类使用lineterminator参数

import sys
import csv

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

这有一个缺点,即输出流以“,”结束,但其他方面的工作方式与您所希望的一样。你知道吗

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

相关问题 更多 >