首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(ijson)获取带有任何前缀的项目

(ijson)获取带有任何前缀的项目
EN

Stack Overflow用户
提问于 2020-02-04 20:10:41
回答 2查看 519关注 0票数 0

我有一个像这样的json文件:

代码语言:javascript
复制
{
    "europe": [
      "germany",
      "france",
      ...
    ],
    "america": [
      "usa",
      "canada",
      ...
    ]
  }

我想要获得每个前缀的所有项,如下所示:

代码语言:javascript
复制
germany
france
usa
canada

我使用的是:

代码语言:javascript
复制
with open('file.json', 'r', encoding='utf-8') as f:
    for object in ijson.items(f, "item"):
        print (object)

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

也许你能帮我。

问候

EN

回答 2

Stack Overflow用户

发布于 2020-02-04 20:34:18

我是不是理解正确了,您只是想要一份没有大陆的所有国家的列表?

代码语言:javascript
复制
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)
票数 0
EN

Stack Overflow用户

发布于 2020-02-20 14:25:56

目前items无法做到这一点,因为它不支持通配符或深度规范。你可以不用大惊小怪的最接近的( 2.6)是这样做:

代码语言:javascript
复制
for continent, countries in ijson.kvitems(f, ''):
   for country in countries:
      print(country)

如果单独的国家列表本身太大而无法保存在内存中,那么您将不得不求助于基于ijson.parse()的更手动的方法来跟踪您的路径的“深度”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60057151

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档