我正在生成一个包含预期结果的csv,所有数字都是正确的。
但是,从表达的角度来看,它包含所有内容的括号和逗号等。
有没有办法删除这些内容?
我尝试添加逗号作为分隔符,但这并不能解决问题。
示例输出:
确定:('Egg',)
results = []
results1 = []
results2 = []
results3 = []
results4 = []
results5 = []
results6 = []
cur.execute(dbQuery)
results.extend(cur.fetchall())
cur.execute(dbQuery1)
results1.extend(cur.fetchall())
cur.execute(dbQuery2)
results2.extend(cur.fetchall())
cur.execute(dbQuery3)
results3.extend(cur.fetchall())
cur.execute(dbQuery4)
results4.extend(cur.fetchall())
cur.execute(dbQuery5)
results5.extend(cur.fetchall())
cur.execute(dbQuery6)
results6.extend(cur.fetchall())
with open("Stats.csv", "wb") as csv_file:
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['Query1', 'Query2', 'Query3', 'Query4', 'Query5', 'Query6', 'Query7'])
csv_writer.writerows(zip(*[results, results1, results2, results3, results4, results5, results6]))
答案 0 :(得分:1)
zip
函数返回一个元组列表[[x,y),(t,s)...]
writerows
方法需要一个列表列表。因此,我认为您应在调用zip
之前格式化writerows
返回值。这样的事情应该起作用:
result = zip(results, results1, results2, results3, results4, results5, results6)
csv_writer.writerows([list(row) for row in result])
编辑:
我想我了解您在这里遇到的问题(因此,请忽略我之前的回答)。
fetchall
函数返回一个像[(x,), (y,)]
这样的元组列表
因此,您的resultsX
变量将采用这种格式。然后,您将在这些列表之间应用邮政编码(请参阅here zip
的作用)。
例如,如果我们有
results = [(x,), (y,)]
results1 = [(t,), (z,)]
运行zip(results, results1)
时,它将返回:
[((x,), (t,)), ((y,), (z,))]
因此,这就是您传递给writerows
的列表的格式,这意味着第一行将是:((x,), (t,))
,其中元素one是:(x,)
,第二行是是(t,)
因此,不确定要使用zip
函数在CSV中写入什么内容。但是,您得到的结果是因为要在csv中编写的元素是元组而不是值。
我不知道您在这里执行的查询,但是如果每个结果只期望一个字段,那么可能需要删除每个resultsX
变量中的元组。您可以在此线程中查看操作方法:https://stackoverflow.com/a/12867429/1130381
我希望它能对您有所帮助,但这是我所能提供的最好信息。