こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

回答受付中の質問

以下のようなjsonファイルで、"A" : "11

以下のようなjsonファイルで、"A" : "111"がある部分だけを消去したいのですが、python2.7.10とWindows7(x86)では可能でしょうか。やり方を知っている方いらっしゃったら教えてください。
---
[
[
{
"A" : "111",
"B" : "...",
"C" : "..."
},
{
"A" : "011",
"B" : "...",
"C" : "..."
},
{
"A" : "001",
"B" : "...",
"C" : "..."
}
],
[
{
"A" : "111",
"B" : "...",
"C" : "..."
},
{
"A" : "011",
"B" : "...",
"C" : "..."
},
{
"A" : "001",
"B" : "...",
"C" : "..."
}
]
]
を、
[
[
{
"A" : "011",
"B" : "...",
"C" : "..."
},
{
"A" : "001",
"B" : "...",
"C" : "..."
}
],
[
{
"A" : "011",
"B" : "...",
"C" : "..."
},
{
"A" : "001",
"B" : "...",
"C" : "..."
}
]
]
としたいです。

投稿日時 - 2018-09-16 06:34:20

QNo.9537782

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

jsonファイルを読み込み、辞書型に変換して処理します。
jsonファイルはPythonスクリプトと同じフォルダ内に"data.json"として保存されているとします。
---
import json

path = 'data.json'
f = open(path, 'r')

data = json.load(f)

block_idx = 0
item_idx = 0
for block in data:
 for item in block:
  if "A" in item and item["A"] == "111":
   del data[block_idx][item_idx]
  item_idx += 1
 block_idx += 1
 item_idx = 0

out = json.dumps(data)
print(out)

f.close()
---
上記スクリプトで、変数outに"A": "111"のある部分を消去したjsonデータが格納されます。
※OKWAVEの仕様上、インデントを全角スペースに変換しているのでご注意ください。

投稿日時 - 2018-09-16 18:46:43