如何从 JSON 文件中导入字段?

Posted

技术标签:

【中文标题】如何从 JSON 文件中导入字段?【英文标题】:How to import fields from a JSON file? 【发布时间】:2019-01-18 18:18:26 【问题描述】:

我只想在我的 python 程序中导入由以下类型的行组成的 JSON 文件的一些字段:

  
   "business_id":"Apn5Q_b6Nz61Tq4XzPdf9A",
   "name":"Minhas Micro Brewery",
   "neighborhood":"",
   "address":"1314 44 Avenue NE",
   "city":"Calgary",
   "state":"AB",
   "postal_code":"T2E 6L6",
   "latitude":51.0918130155,
   "longitude":-114.031674872,
   "stars":4.0,
   "review_count":24,
   "is_open":1,
   "attributes":  
      "BikeParking":"False",
      "BusinessAcceptsCreditCards":"True",
      "BusinessParking":"'garage': False, 'street': True, 'validated': False, 'lot': False, 'valet': False",
      "GoodForKids":"True",
      "HasTV":"True",
      "NoiseLevel":"average",
      "OutdoorSeating":"False",
      "RestaurantsAttire":"casual",
      "RestaurantsDelivery":"False",
      "RestaurantsGoodForGroups":"True",
      "RestaurantsPriceRange2":"2",
      "RestaurantsReservations":"True",
      "RestaurantsTakeOut":"True"
   ,
   "categories":"Tours, Breweries, Pizza, Restaurants, Food, Hotels & Travel",
   "hours":  
      "Monday":"8:30-17:0",
      "Tuesday":"11:0-21:0",
      "Wednesday":"11:0-21:0",
      "Thursday":"11:0-21:0",
      "Friday":"11:0-21:0",
      "Saturday":"11:0-21:0"
   

例如,我只想导入以下字段:business_id、名称和类别。 我尝试了不同的方式,但程序无法识别这些字段,并且每一行都被视为一个字段。例如,我使用以下命令遇到了这个问题:

x = pd.read_json('.../data.json')

我也试过这样导入:

with open('.../data.json', 'r') as f:
    x = json.load(f)

当我尝试命令时

x = x["business_id","name","categories"]

它返回以下错误

KeyError: "['business_id' 'name' 'categories'] not in index"

程序无法以任何方式识别字段。

【问题讨论】:

【参考方案1】:

我只想在我的 python 程序中导入由以下类型的行组成的 JSON 文件的一些字段:

不确定我是否理解“导入”JSON 文件的意思,但我假设您想提取 JSON 文件的子集并将其保存为局部变量

如果是这样,那么您使用默认 json 模块的代码 sn-p 就不会太远了。 Json.load() 函数返回 Python 字典中的 json 数据。知道了这一点,我们只需要对如何从 python 字典中提取数据进行一些小的调整

在开始之前,我将您的 JSON 文件保存为“data.json”

import json
with open(r'data.json') as jsonfile:
     data = json.load(jsonfile) # you had it right up to here
     data_import = [data['business_id'],data['name'],data['categories']] #creating local variable

由于您已经从 JSON/python 字典导入,因此将 python 字典创建为本地导入变量是保持数据干净的另一种好方法

import json
with open(r'data.json') as jsonfile:
     data = json.load(jsonfile)
     data_import = 
     data_import['business_id'] = data['business_id']
     data_import['name'] = data['name']
     data_import['categories'] = data['categories']

【讨论】:

你建议的两种方式,都会出现同样的错误:“TypeError: list indices must be integers or slices, not str” 这很奇怪。第二种方法甚至没有列表。您是否尝试过隔离问题?检查 TypeError 来自哪一行 对不起,我弄错了。但它也给出了错误。 Traceback(最近一次调用最后):文件“........”,第 36 行,在 data = json.load(jsonfile) 文件“............”,第 296 行,在加载返回loads(fp.read(), MemoryError 我看到您遇到了 MemoryError,这可能不是您的代码的问题,但您的 JSON 文件非常庞大。在这里查看link。您可能必须将 jsonfile 分解为更小的子集 我从文件中复制了一百行,并将它们保存到另一个 json 文件中。我尝试加载新文件,但仍然报错。

以上是关于如何从 JSON 文件中导入字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Jest 测试中导入 JSON 文件?

如何在 ECMAScript 6 中导入 JSON 文件?

在mongodb集合中导入json吗?

如何使用 ECMA 模块在 nodejs 中导入 .json 文件?

在 d3.js 中导入 json 文件

如何使用 axios 在 Vue Js 中导入 json 数据