【问题标题】:Appending json response to a list将 json 响应附加到列表
【发布时间】:2019-04-30 20:34:28
【问题描述】:

我无法将 json 响应附加到列表中。我确定这是一个简单的错误,但我花了好几个小时试图解决这个问题。 . .任何建议将不胜感激。

edd_areas = ["San Francisco-Redwood City-South San Francisco MD", 
             "Los Angeles-Long Beach-Glendale MD", 
             "Oakland-Hayward-Berkeley MD",
             "California"]

edd_year = []

edd_url = "https://data.edd.ca.gov/resource/4ezp-3bs3.json?"

for area in edd_areas:
    edd_query_url = edd_url + "area_name=" + area + "&seasonally_adjusted_y_n=N"
    edd_qresponse = requests.get(edd_query_url).json

    edd_year.append(edd_qresponse["year"])

Error: 
TypeError                                 Traceback (most recent call last)
<ipython-input-10-f3a906010984> in <module>()
     17 
     18 
---> 19     edd_year.append(edd_qresponse["year"])

TypeError: 'method' object is not subscriptable

【问题讨论】:

  • 试试edd_year.append(edd_qresponse[0]["year"])
  • 谢谢。仍然得到同样的错误。这是 json 数据的示例:
  • [ { "area_name": "Oakland-Hayward-Berkeley MD", "area_type": "大都会区", "date": "1990-01-01T00:00:00.000", "employment ”:“1068800”,“labor_force”:“1111400”,“月”:“一月”,“seasonally_adjusted_y_n”:“N”,“status_preliminary_final”:“Final”,“失业”:“42600”,“unemployment_rate”: "3.8", "年": "1990"
  • 你确定你的输出变量edd_qresponse有json格式的数据吗?检查这个repl.it/@MahmutKilic/OfficialBelatedStack

标签: python json list append jupyter-notebook


【解决方案1】:

两件事:

第一个问题在requests.get(edd_query_url).json.json 是一种方法,不返回 json 数据,您可能试图改为 .json() 并实际获取数据。

第二个问题是实际的 json 数据是一个列表,所以你不能用像“year”这样的字符串来索引它。

把所有东西放在一起:

edd_areas = ["San Francisco-Redwood City-South San Francisco MD", 
         "Los Angeles-Long Beach-Glendale MD", 
         "Oakland-Hayward-Berkeley MD",
         "California"]

edd_year = []

edd_url = "https://data.edd.ca.gov/resource/4ezp-3bs3.json?"

for area in edd_areas:
    edd_query_url = edd_url + "area_name=" + area + "&seasonally_adjusted_y_n=N"
    edd_qresponse = requests.get(edd_query_url).json() # call the function!

    edd_year.append(edd_qresponse) # just append the list since you can't index by "year"

你会得到如下所示的东西:

[[{'area_name': 'San Francisco-Redwood City-South San Francisco MD', 'area_type': 'Metropolitan Area', 'date': '1990-01-01T00:00:00.000' ...

【讨论】:

  • 谢谢!调用 json 函数有效。但是,我确实想将年、月、地区和失业率放入列表中,以便转换为数据框。这些是我要添加的其他变量: edd_year = [] edd_month = [] edd_date = [] edd_city = [] edd_rate = []
  • TypeError Traceback(最近一次调用最后一次) in () 16 edd_qresponse = requests.get(edd_query_url).json() 17 ---> 18 edd_year.append(edd_qresponse["year"]) 19 edd_month.append(edd_qresponse["month"]) 20 edd_date.append(edd_qresponse["date"]) TypeError: list indices must be integers or slices, not str
  • @ChrisB。正如我在上面的评论中提到的,由于您的 json 格式在列表中,因此您需要先调用 index。试试edd_year.append(edd_qresponse[0]["year"])
猜你喜欢
  • 1970-01-01
  • 2019-07-26
  • 1970-01-01
  • 2022-01-08
  • 2021-10-11
  • 1970-01-01
  • 2012-03-23
  • 2023-03-09
  • 2014-01-04
相关资源
最近更新 更多