[解決済み] 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
クラスがあります。
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python LeNetネットワークの説明とpytorchでの実装
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] 文字列の単語を反復処理するにはどうすればよいですか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】文字列をdatetimeに変換する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Python jiabaライブラリの使用方法について説明
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
PythonによるExcelファイルの一括操作の説明
-
[解決済み】RuntimeWarning: invalid value encountered in double_scalars で numpy の除算ができない。
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】socket.error: [Errno 48] アドレスはすでに使用中です。
-
[解決済み】TypeError: re.findall()でバイトのようなオブジェクトに文字列パターンを使用することはできません。)
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。