dポイントプレゼントキャンペーン実施中!

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

A 回答 (1件)

import json


# まずは
# https://docs.python.org/ja/2.7/library/json.html …
# を参照の事

# 面倒くさいんでprint関数と単なる文字列を利用したが、ファイルの読み込みは自分でやって下さい。
print json.dumps([[y for y in x if y["A"] != "111"] for x in json.loads('[\
  [\
    {\
      "A" : "111",\
      "B" : "...",\
      "C" : "..."\
      },\
    {\
      "A" : "011",\
      "B" : "...",\
      "C" : "..."\
      },\
    {\
      "A" : "001",\
      "B" : "...",\
      "C" : "..."\
      }\
    ],\
  [\
    {\
      "A" : "111",\
      "B" : "...",\
      "C" : "..."\
      },\
    {\
      "A" : "011",\
      "B" : "...",\
      "C" : "..."\
      },\
    {\
      "A" : "001",\
      "B" : "...",\
      "C" : "..."\
      }\
    ]\
  ]')], sort_keys=True, indent=4, separators=(',', ': '))

# 基本的にはjsonライブラリを使ってjsonフォーマットを辞書型のリストに変換します。
# リストを入手したらもうこれは勝ったも同然、リスト内包表記を使ってフィルタリングすればO.K.。
# あとは生成されたリストをもう一度jsonフォーマットにエンコーディング(Python上では文字列ですが)
# そしてファイルに書き戻せば良いです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!