0

我有一个这样的json文件:

{
    "europe": [
      "germany",
      "france",
      ...
    ],
    "america": [
      "usa",
      "canada",
      ...
    ]
  }

我想像这样获取每个前缀的所有项目:

germany
france
usa
canada

我用这个:

with open('file.json', 'r', encoding='utf-8') as f:
    for object in ijson.items(f, "item"):
        print (object)

我用一个接受前面的每个字符串的正则表达式进行了尝试item,但它不起作用。我认为有一个非常简单的解决方案,我只是看不到。还查看了 ijson 的文档,但也没有找到任何解决方案。

也许你可以帮助我。

问候

4

2 回答 2

0

目前没有办法这样做,items因为它不支持通配符或深度规范。您可以毫不费力地获得最接近(使用 2.6)的方法是:

for continent, countries in ijson.kvitems(f, ''):
   for country in countries:
      print(country)

如果各个国家/地区列表本身太大而无法保存在内存中,则您必须采用基于ijson.parse()跟踪路径“深度”的更加手动的方法。

于 2020-02-20T06:25:56.137 回答
0

Do I understand correctly that you simply want a list of all the countries without the continents?

import json
with open('file.json', 'r', encoding='utf-8') as f:
    countries = [con for coun in json.load(f).values() for con in coun]
print(countries)
于 2020-02-04T12:34:18.300 回答