我是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
它打印出一个字符串列表?您可以使用
"|".join(string.split(','))
将曾经用逗号分隔为管道分隔的字符串连接起来。并且,在列表上使用'\n'.join(list)
来获得换行符。这不会在末尾添加新行,因此如果您想这样做,只需在结果中添加+ '\n'
。在要获取管道符号作为分隔符,可以在创建编写器时传入“delimiter”参数:
c=csv.writer(打开(“C:\mystuff\输出.csv“,”wb“),分隔符=“|”)
也可以添加lineterminator参数:
c=csv.writer(打开(“C:\mystuff\输出.csv“,”wb“),分隔符=”,lineterminator=“\n”)
虽然它应该默认为“\r\n”
我想你也可能对“writerow”的调用有问题。db result是一个元组列表,要正确地将其写入csv文件,应该使用“writerows”(注意函数的复数形式)。这应该正确地处理列表,并将成对的db值放在单独的行上,用管道正确地分隔。目前,您的代码正在编写一个“行”,这就是为什么没有分隔数据值的新行。在
新代码:
c=csv.writer(打开(“C:\mystuff\输出.csv“,”wb“),分隔符=“|”)
c.writerows(结果)
相关问题 更多 >
编程相关推荐