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値のペアがパイプで正しく区切られた別の行に配置されます。現在、コードは1つの「行」を記述しているため、データ値を区切る改行はありません。

新しいコード:

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 に答える