ある取引先から連携されたCSVをAWSのAthenaで取り扱いたいのですが、タイトルにあるように
csv内のダブルクォーテーションで囲まれたフィールドの中の 『エスケープされていないダブルクォーテーション』が原因で
ただしく、フィールドが認識できず困っています。
(取引先ではCOBOLによってCSVを生成しているらしく、上記は仕様のため変更不可らしいので、こちらで変換するしかありません)
そこでpythonでCSVを処理して、望ましい形(”が\でエスケープされた)CSVに変換したいのですが、
うまく出来ず、ご教授いただけましたら幸いです。
実現したいこととしては、
下記1.のような元データのCSVを
下記4.のような望ましい形式のCSVに変換することです
1.元データのCSVのイメージ'imput.csv'
1,2,3,"問題箇所"",123,"E"
2.試したスクリプト
import csv from csv import reader, writer with open('input.csv', encoding="utf-8") as fin: with open('output.csv', "w", encoding="utf-8", newline='') as fout: wt = writer( fout, delimiter=',', # 区切り文字をカンマで指定 quotechar='"', # 囲い文字をダブルクォーテーションで指定 escapechar='\\', # escape文字を指定 quoting=csv.QUOTE_MINIMAL # クオート ) for row in reader( fin, delimiter=',', # 区切り文字をカンマで指定 quotechar='"', # 囲い文字をダブルクォーテーションで指定 quoting=csv.QUOTE_MINIMAL # クオート ): output_row = [] for col in row: output_row.append(str(col)) wt.writerow(output_row)
3.上記スクリプトの処理結果(失敗)'output.csv'
1,2,3,"問題箇所"",123,E"""
※問題箇所の後ろの”がエスケープされてしまい、Eの後ろの”もエスケープされて、『問題箇所",123,E"』という一つのフィールドとして
認識されてしまっている。
4.望ましいCSVのイメージ
1,2,3,"問題箇所\"",123,"E"
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/04/19 07:20 編集