質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

341閲覧

ファイルの配列内の要素がjson型であるファイルが配列として読み込めません

inaba_noritsugu

総合スコア10

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

ファイルI/O

ファイルI/Oは、コンピューターにおけるファイルの入出力です。これは生成/削除やファイルを読み込んだり、出力をファイルに書き込むようなディレクトリやファイルの運用を含みます。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2022/02/15 00:24

inaba@python初心者@シニアです。
読み込みたいファイルが1行で構成され次のようになっています。
[{},{},{},・・・{},]
ファイルの要素がjson型になっています。
「ファイルを読込後、json型の値を変更して元と同じ形に書き戻したい」というのが目的です。
open後
listt= f.readlines()を用いて読み込みましたが、この段階では1行のリストとして読み込まれます。
分割する文字を","を用いるとjson型のあちこちにあるカンマで分割されますし、"},"を区切り文字にして取り込むというのもどうもすっきりしません。この場合、どのようにすれば目的が達成できますか。ファイルの読込は1行型のリストで問題がなく、その後工夫して配列に取り込む方法があるのでしょうか。
ご教授お願いいたします。 稲葉則次

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/02/15 00:31

import json with open('input.txt') as f: dic = json.load(f) で読み込むとどうなるでしょうか?
quickquip

2022/02/15 01:18

> 1行で構成され次のようになっています。 データはダミーでいいですが、構造が分かるようにかつそのままコードを書けるように省略なく書くべきですよ × [{},{},{},・・・{},] × [{"AA", 2}, {"BB", 2}, …… {"GG", 7}] ○ [{"AA", 2}, {"BB", 2}, {"DD", 4}, {"EE", 5}, {"FF", 6}] その上で、今のソースと、欲しい結果もあわせて書くとよいです。 ところで [{},{},{},・・・{},] だと最後の , がJSONとして不正です。 こういうのは「本当にデータがそうなっている」のか「書き損じ」なのか分かりづらくてつらいです。
退会済みユーザー

退会済みユーザー

2022/02/15 01:31

ファイルから読み込んだ JSON 文字列を Python オブジェクトにデシリアライズして、デシリアライズした Rython オブジェクトを操作して必要な変更を行い、変更済みの Python オブジェクトをシリアライズして JSON 文字列にし、その JSON 文字列をファイルに書き戻してはいかが?
guest

回答2

0

自己解決

quickquip様
質問の際の重要なポイントが理解できました。
・ダミーかつシンプルで構造がわかりそのまま使えること
・欲しい結果を提示すること
ですね。「シニアになって初めて」の質問でしたが、次回発信する元気をいただきました。ちなみに「書き損じ」でした。謝謝
SurferOnWww様
でシリアライズという言葉を初めて知りました。ここでいうPythonオブジェクトは当方の場合でいう辞書型と理解しました。最終的な方法として「力技」でコメントいただいた基本手法で書き戻すつもりでしたが、Json->辞書型ー>修正ー>Jsonという過程はシンプルに可能だとわかりました。
こんごともよろしくお願いいたします。

hoshi-takanori様
配列もJSONです・・・この短い言葉が何を意味するのか最初全くわかりませんでした。JSONは配列です・・ではないだろうし、配列「も」JSON,・・・
調べていて JSONには{}で完結するオブジェクト型の他に[]でくくられる配列「も」あるという説明に出会い、電撃ショックが走りました。
そういうことだったのですね。本当にありがとうございました!

Yonakororin様にコメントをいただいたjson.loadを用いて読み込み、解決する見通しが立ちましたので、報告させていただきます。(返信はこちらで良かったのでしょうか) 稲葉則次

投稿2022/02/15 21:07

inaba_noritsugu

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

pythonであれば、シンプルにjson.load(f)ではないでしょうか。

投稿2022/02/15 00:34

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問