締切済み

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

  • 困ってます
  • 質問No.9537782
  • 閲覧数75
  • ありがとう数2
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 90% (9/10)

以下のような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" : "..."
}
]
]
としたいです。

回答 (全1件)

  • 回答No.1

ベストアンサー率 67% (79/117)

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の仕様上、インデントを全角スペースに変換しているのでご注意ください。
お礼コメント
bluechart

お礼率 90% (9/10)

ずいぶん時間が経ってしまいましたが...
おかげさまでできました!

本当に、本当にありがとうございます。
報告が遅れ、申し訳ございませんでした。
投稿日時 - 2018-11-08 17:46:07
感謝経済
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


感謝でトクする時代へ!感謝経済に参加しよう!

ピックアップ

ページ先頭へ