我在这里看到很多关于如何从CSV文件中的一行中删除引号的问题,但这不是我的问题。使用像
这样的东西with open(path), 'wb') as myfile:
writer = csv.writer(myfile)
我需要创建由3个变量的值组成的行。这导致了这样一条线:
newline = var1 + " " + var2 + " " + var3
我想要value1 value2 value3
之类的结果,但它会给我"value1 value2 value3"
。我尝试过它之间没有空格,所有这些都搞砸了格式而没有删除引号。我还尝试将quoting = CSV_NOQUOTE
(或类似的东西)添加到编写器声明中,但是在我添加\n
之前,这导致了关于丢失escapechars的错误,即便如此它也没有消除报价。我一直在搜索这里的页面大约一个小时试图找到一些东西,但我找不到任何东西。有人可以提供任何建议吗?谢谢!
答案 0 :(得分:6)
您没有显示实际使用writer
向文件写入行的行。人们有时犯的一个错误就是假设writerow
接受的东西不是可迭代的值。
以下代码(python 2):
import csv
with open("out.dat", "wb") as myfile:
writer = csv.writer(myfile, delimiter=" ", quoting=csv.QUOTE_NONE)
var1, var2, var3 = 3.14, 2.1728, "Fred"
writer.writerow([var1, var2, var3])
产生
~/coding$ cat out.dat
3.14 2.1728 Fred
答案 1 :(得分:1)
编写CSV文件的一个选项是完全避免使用csv
模块:
output = [var1, var2, var3]
with open('output.csv', 'wb') as fo:
fo.write(','.join([str(x) for x in output]) + '\n')
当然,您可以使用列表列表(或任何可迭代的)来写出多行:
outlist = [[var1, var2, var3], [var4, var5, var6]]
with open('output.csv', 'wb') as fo:
for out in outlist:
fo.write(','.join([str(x) for x in out]) + '\n')
如果您想要空格作为分隔符,则可以改为使用' '.join()
。