[解決済み] CSVファイルを複数行のJSONに変換するには?
2022-10-08 04:43:32
質問
これは私のコードで、本当に単純なものです。
import csv
import json
csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
out = json.dumps( [ row for row in reader ] )
jsonfile.write(out)
いくつかのフィールド名を宣言し、リーダーはCSVでファイルを読み、ファイル名を指定してJSON形式にダンプします。ここで問題なのが...
CSVファイルの各レコードは、異なる行にあります。JSONの出力も同じようにしたいのです。問題は、1 つの巨大で長い行にすべてをダンプすることです。
私は次のようなものを使ってみました。
for line in csvfile:
のようなものを使ってみて、その下の私のコードを
reader = csv.DictReader( line, fieldnames)
で実行すると、各行をループしますが、1行でファイル全体を処理し、別の行でファイル全体をループし...行数がなくなるまで続けます。
これを修正するために何か提案はありますか?
編集:明確にするために、現在私は持っています。(1行目の各レコード)
[{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"},{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}]
探しているもの (2行に2レコード)
{"FirstName":"John","LastName":"Doe","IDNumber":"123","Message":"None"}
{"FirstName":"George","LastName":"Washington","IDNumber":"001","Message":"Something"}
個々のフィールドがインデントされ、別の行にあるのではなく、各レコードがそれ自身の行にあります。
いくつかの入力例です。
"John","Doe","001","Message1"
"George","Washington","002","Message2"
どのように解決するのですか?
この出力は、有効な json ドキュメントではないことが問題です。 json ドキュメントのストリーム !
必要なものであればそれでも構いませんが、出力したいドキュメントごとに
json.dumps
.
ドキュメントを区切るための改行は、それらのドキュメントには含まれていないので、自分で供給する必要があります。 したがって、json.dump の呼び出しからループを引き出して、書き込まれた各ドキュメントに対して改行を挿入すればよいのです。
import csv
import json
csvfile = open('file.csv', 'r')
jsonfile = open('file.json', 'w')
fieldnames = ("FirstName","LastName","IDNumber","Message")
reader = csv.DictReader( csvfile, fieldnames)
for row in reader:
json.dump(row, jsonfile)
jsonfile.write('\n')
関連
-
[解決済み] 正しいJSONコンテンツタイプは何ですか?
-
[解決済み] JSONでコメントを使用することはできますか?
-
[解決済み] なぜGoogleはJSONレスポンスにwhile(1);を前置するのでしょうか?
-
[解決済み] cURLでJSONデータをPOSTするにはどうすればよいですか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] JavaScriptでJSONをきれいに印刷する
-
[解決済み] JSONファイルをprettyprintする方法は?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] virtualenvsはどこに作成するのですか?
最新
-
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のマルチプロセッシングプールimap_unorderedの呼び出しの進捗を表示しますか?
-
[解決済み] Flaskで1時間ごとに関数を実行するようにスケジュールするには?
-
[解決済み] Django Rest Framework ファイルアップロード
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] 古いバージョンのPythonにおける辞書のキーの並び順
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] Pythonでマルチプロセッシングキューを使うには?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] 新しいpip backtrackingの実行時問題の解決