【发布时间】:2020-08-01 05:43:15
【问题描述】:
我开始使用 Python 学习数据分析。我一直在尝试将Adzuna dataset 用于我的课程项目。我的 API 调用的响应如下所示:
{
"results": [
{
"salary_min": 50000,
"longitude": -0.776902,
"location": {
"__CLASS__": "Adzuna::API::Response::Location",
"area": [
"UK",
"South East England",
"Marlow"
],
"display_name": "Marlow, Buckinghamshire"
},
"salary_is_predicted": 0,
"description": "JavaScript Developer Corporate ...",
"__CLASS__": "Adzuna::API::Response::Job",
"created": "2013-11-08T18:07:39Z",
"latitude": 51.571999,
"redirect_url": "http://adzuna.co.uk/jobs/land/ad/129698749...",
"title": "Javascript Developer",
"category": {
"__CLASS__": "Adzuna::API::Response::Category",
"label": "IT Jobs",
"tag": "it-jobs"
},
"id": "129698749",
"salary_max": 55000,
"company": {
"__CLASS__": "Adzuna::API::Response::Company",
"display_name": "Corporate Project Solutions"
},
"contract_type": "permanent"
},
... another 19 samples here ...
],
"mean": 43900.46,
"__CLASS__": "Adzuna::API::Response::JobSearchResults",
"count": 74433
}
我的目标是分别在“结果”下提取 20 个样本,以便稍后创建一个 numpy 数据集进行数据分析。所以,我这样写 Python:
item_dict = json.loads(response.text)
# Since "results" start/end with [ and ], Python treats it as a list. So, I need to remove them.
string_data = str(item_dict['results']).lstrip("[")
string_data = string_data.rstrip("]")
# Convert "results" string back to JSON, then extract each sample from 20 samples
json_results_data = json.loads(string_data)
for sample in json_results_data:
print(sample)
但是,json_results_data = json.loads(string_data) 不能很好地将“结果”字符串转换为 JSON。我是 Python 新手,所以我可能会问一个愚蠢的问题,但如果你能找到一种简单的方法来解决这个问题,请告诉我。谢谢。
【问题讨论】:
-
如果您使用的是
requests,只需执行response.json()。数据应该是一本字典,所以不确定你为什么要进行字符串操作 -
@gold_cy 是的,
response.json()是字典,但如果我写(responce.json())['results'],这将被视为一个列表,因为它以“[]”开头/结尾,所以我决定删除[] 作为字符串,然后尝试将其转换回 JSON 或字典。 (我说得通吗?) -
@gold_cy 但你是对的,
json.loads(response.text)应该只是response.json。我现在就这个问题修改一下。 -
如果
results是一个列表,只需对其进行迭代以操作其中的对象,不要尝试进行一些字符串操作 -
它是一个列表,但是每个样本都用
,(逗号)分隔,这不是我想要的分隔方式...
标签: python json string pandas list