python 3.7 を使用して、DBから取得したデータをCSVに書き込んでいく(writer.writerow)処理を実装しています。
出力内容が少々複雑なので、助けていただけると幸いです。
実現したいこと
数字、文字列を各行に含む内容をCSVに出力するのですが、「フィールドに半角スペースが含まれる場合のみ」ダブルクォーテーションで囲んだ以下のような状態で出力したいです。
1234,"test test",3456 <= 1. 半角スペースを含むのでクォート 1235,sample,452 <= 2. quotechar を含まないためクォートなしで出力 7890,5gg6,6789 <= 3. 2.と同様 asge,"rg""hk6", <= 4. quotechar のデフォルト(")に該当するためクォートされる
csvモジュールの writer には delimiter や quotechar があり、それらで出力内容のクォートを制御できるという点に関しては把握していますが、
上記のような出力を実現できる方法はあるでしょうか?
以下、現在の該当部分のソースとなります。
python3
1with open("/tmp/" + file_name, "a", encoding="utf-8") as csv_file: 2 writer = csv.writer(csv_file) 3 # set header 4 writer.writerow(header) 5 ## Get total number of SELECT data 6 with conn.cursor() as cur: 7 for i in range(offset, current_block_fetch, limit): 8 # get records each 1,000 9 cur.execute(query + " LIMIT %s OFFSET %s", [limit, i]) 10 11 # get and shape of all selected data 12 13 for row in cur.fetchall(): 14 writer.writerow(row) 15
その他、必要な情報などあればコメント等いただければ適宜追記致します。
注釈:現在はcsvモジュールでの書き込みとなっておりますが、実現できるのであればcsvモジュールを使用しない方法でも問題ありません。
よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー