我有一个像这样的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的文档,但也没有找到任何解决方案。
也许你能帮我。
问候
发布于 2020-02-04 20:34:18
我是不是理解正确了,您只是想要一份没有大陆的所有国家的列表?
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-20 14:25:56
目前items无法做到这一点,因为它不支持通配符或深度规范。你可以不用大惊小怪的最接近的( 2.6)是这样做:
for continent, countries in ijson.kvitems(f, ''):
for country in countries:
print(country)如果单独的国家列表本身太大而无法保存在内存中,那么您将不得不求助于基于ijson.parse()的更手动的方法来跟踪您的路径的“深度”。
https://stackoverflow.com/questions/60057151
复制相似问题