1. ホーム
  2. python

[解決済み] CSV形式のデータを文字列(ファイルではなく)で書き込むにはどうしたらよいですか?

2022-04-29 04:50:14

質問

のようなデータをキャストしたい。 [1,2,'a','He said "what do you mean?"'] をCSV形式の文字列に変換します。

通常であれば csv.writer() これは、すべてのおかしなエッジケース(カンマのエスケープ、引用符のエスケープ、CSVの方言など)を処理するためです。 csv.writer() は文字列ではなくファイルオブジェクトに出力することを想定しています。

私の現在の解決策は、このややハチャメチャな関数です。

def CSV_String_Writeline(data):
    class Dummy_Writer:
        def write(self,instring):
            self.outstring = instring.strip("\r\n")
    dw = Dummy_Writer()
    csv_w = csv.writer( dw )
    csv_w.writerow(data)
    return dw.outstring

エッジケースをうまく処理できる、よりエレガントな解決策をどなたか教えてください。

編集部:結局こうなりました。

def csv2string(data):
    si = StringIO.StringIO()
    cw = csv.writer(si)
    cw.writerow(data)
    return si.getvalue().strip('\r\n')

解決方法は?

を使用することができます。 StringIO の代わりに、独自の Dummy_Writer :

このモジュールは、ファイルのようなクラスを実装しています。 StringIO 文字列バッファ(メモリファイルとも呼ばれる)を読み書きするものです。

また、以下のようなものもあります。 cStringIO の高速化バージョンです。 StringIO クラスがあります。