2

我是 python 的初学者,我正在尝试将查询结果打印到管道分隔文件。我怎样才能修改这个脚本来做到这一点?

import cx_Oracle
import csv

connection = cx_Oracle.connect("blah blah blah connection stuff")
cursor = connection.cursor()
cursor.execute("select column1, column2 from schema.table")
result=cursor.fetchall()
c = csv.writer(open("C:\mystuff\output.csv","wb"))
c.writerow(result)      

现在它打印出来像这样 "(10001965, '0828442C00548')","(10001985, '0696230C35242')","(10001986, 'C41251')"

我希望它在行尾打印管道分隔和新行。谢谢你的帮助!10001965|0828442C00548\n 10001985|0696230C35242\n 10001986|C41251\n

4

2 回答 2

4

要将管道符号作为分隔符,您可以在创建编写器时传入“分隔符”参数:

c = csv.writer(open("C:\mystuff\output.csv","wb"), delimiter="|")

您还可以添加一个 lineterminator 参数:

c = csv.writer(open("C:\mystuff\output.csv","wb"), delimiter="|", lineterminator="\n")

虽然它应该默认为 "\r\n"

我认为您可能对“writerow”的调用也有问题。db 结果是一个元组列表,要将其正确写入 csv 文件,您应该使用“writerows”(注意函数的复数形式)。这应该正确处理列表并将 db 值对放在单独的行上,用管道正确分隔。目前,您的代码正在编写一个“行”,这就是为什么没有换行符分隔数据值的原因。

新代码:

c = csv.writer(open("C:\mystuff\output.csv","wb"), delimiter="|")

c.writerows(结果)

于 2012-10-04T19:15:13.583 回答
0

它打印出一个字符串列表?您可以使用"|".join(string.split(','))连接曾经以逗号分隔的字符串以管道分隔。并且,使用'\n'.join(list)列表获取换行符。这不会在末尾添加换行符,因此如果您愿意,只需+ '\n'添加结果即可。

于 2012-10-04T18:43:16.337 回答