【问题标题】:Selective reading in of JSON objects选择性读入 JSON 对象
【发布时间】:2020-02-07 21:24:09
【问题描述】:

假设我有这个 JSON 字符串(复制自 digitalocean.com

{ 
  "sammy" : {
    "username"  : "SammyShark",
    "location"  : "Indian Ocean",
    "online"    : true,
    "followers" : 987
  },
  "jesse" : {
    "username"  : "JesseOctopus",
    "location"  : "Pacific Ocean",
    "online"    : false,
    "followers" : 432
  },
  "drew" : {
    "username"  : "DrewSquid",
    "location"  : "Atlantic Ocean",
    "online"    : false,
    "followers" : 321
  },
  "jamie" : {
    "username"  : "JamieMantisShrimp",
    "location"  : "Pacific Ocean",
    "online"    : true,
    "followers" : 654
  }
}

我需要选择性地仅读取在名为 location 的键中包含 Pacific 的对象/记录。我如何读取其他记录,例如以“印度洋”和“大西洋”作为位置值的记录?到目前为止,我可以在整个文件中找到所有示例。

非常感谢您的帮助,即使答案是“您只需阅读全文”!

【问题讨论】:

  • 为什么你这么反对阅读整篇文章然后过滤它以删除那些错误的海洋?以块的形式读取 JSON 文件之类的内容要困难得多,因为您无法确定它的结构。

标签: json python-3.x


【解决方案1】:

如果实在无法读取文件并切片,可以循环执行

selective_data = ['Pacific Ocean']
batch = []

for k, v in data.items():
    for ii, jj in v.items():
        if jj in selective_data:
            batch.append(v) 

df = pd.DataFrame(batch)

            username       location  online  followers
0       JesseOctopus  Pacific Ocean   False        432
1  JamieMantisShrimp  Pacific Ocean    True        654

【讨论】:

  • 感谢凯南回答问题。问题不在于读取整个文件。问题是该文件包含我不应该知道的信息。如果我可以在读入这些对象之前过滤掉它们,那么我就可以读取文件。否则,我必须等到开发人员为我创建一个特殊文件。我正在努力避免等待。
  • 好的,您尝试我的解决方案了吗,它不涉及读取整个文件
  • Kenan,你将如何初始化变量数据?你会包括哪些库?谢谢。
  • 数据是你提供的JSON string,我假设你从json库中做了json.load
  • Kanan,如果在你的 for 循环之前执行 print(data),你会得到什么?
猜你喜欢
  • 1970-01-01
  • 2013-07-13
  • 1970-01-01
  • 2015-10-08
  • 2015-08-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-29
相关资源
最近更新 更多