我是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
答案 0 :(得分: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”
我认为你对“写作”的调用也可能有问题。 db结果是一个元组列表,要正确地将它写入csv文件,你应该使用“writerows”(注意函数的复数形式)。这应该正确处理列表并将db值对放在单独的行上,并用管道正确分隔。目前,您的代码正在编写一个“行”,这就是为什么没有新行分隔数据值。
新代码:
c = csv.writer(open(“C:\ mystuff \ output.csv”,“wb”),delimiter =“|”)
c.writerows(结果)
答案 1 :(得分:0)
打印出一串字符串?您可以使用"|".join(string.split(','))
连接以逗号分隔的字符串以进行管道分隔。并且,在列表上使用'\n'.join(list)
来获取换行符。这不会在最后添加换行符,因此如果您需要,只需+ '\n'
到结果。