Pythonのcsv
モジュールを使用して、CSVファイルにクオート付きで書き込む方法を説明します。Pythonのcsv.writer
には、値をクオートするための4つの組み込み方法があります: csv.QUOTE_ALL
, csv.QUOTE_MINIMAL
, csv.QUOTE_NONNUMERIC
, csv.QUOTE_NONE
。
しかし、すべての非None値をクオートする、PostgresのFORCE QUOTE *
をエミュレートするクオートメカニズムが必要な場合もあります。以下に、そのようなカスタムクオートメカニズムを実装する方法を示します。
def quote(col):
if col is None:
return ''
# uses double-quoting style to escape existing quotes
return '\"{}\"'.format(str(col).replace('\"', '\"\"'))
writer = csv.writer(fileobj, quoting=csv.QUOTE_NONE, escapechar='', quotechar='')
for row in rows:
writer.writerow(map(quote, row))
このコードは、csv.writer
のquoting
パラメータをcsv.QUOTE_NONE
に設定し、escapechar
とquotechar
を空文字列に設定することで、モジュールがすでにクオートされた値をクオートするのを避けます。ただし、この方法はCSVの値にデリミタを使用しない場合に限ります。
以上がPythonでCSVファイルにクオート付きで書き込む方法についての説明です。この情報が役立つことを願っています。