4Manuals

  • PDF Cloud HOME

使用json.loads处理来自API调用的奇怪JSON Download

    如何将文本边界框与pyplot.Rectangle对齐? 导入类问题 在Python数据框中选择列时出错 使用Rabbit的pika确认消息 如何在按住键的同时暂停VideoStream? Python OpenCV 如何在react图表上的datakey中操作DateTime TypeError:无法处理此数据类型 使用buildozer不会下载sdl2_image Golang服务器无法从远程REST API获取所有JSON SMTPSenderRefused,421,超出超时

我在有效地将PhoneNumber值存储在下面的代码段中时遇到了麻烦

true

因此,完成上述操作后,我得到了一个字典“数据”,如下所示:

    response = requests.get(api)
    data = json.loads(response.text)

目标是仅获取PhoneNumber值,即{'Key1': 'Some Value ', 'Key2': [{'PhoneNumber': '180000000000'}]} ,而我的第一个反应是下面的工作方式,但我知道这不会很好地扩展。我想知道是否可以在上面的json.loads调用中传递参数,或者是否有人对如何更有效地获取此值有其他建议,我对此感兴趣。

'180000000000'

因此,在上述数据现在= data = data['Key2'][0]['PhoneNumber']) 之后,我想将其存储在'180000000000'中,我有一个用于JSON文件的旧代码(如下),这有效,但是毫无意义。我只需要将电话号码存储为文本文件(我知道如何与open for .txt结合使用,但是我对如何使用io.Bytes以及是否应该使用SringIO而不是BytesIO感到困惑)

s3

当以这种方式存储它时,当我从S3中提取值时,我必须使用'with gzip.open'并对其进行解码

1 个答案:

答案 0 :(得分:1)

不需要对data['Key2']进行字符串化,标准字典和列表访问语法应适用于您的情况。压缩成一行:

>>> data = {'Key1': 'Some Value ', 'Key2': [{'PhoneNumber': '180000000000'}]}
>>> data['Key2'][0]['PhoneNumber']
'180000000000'

您也可以(可能应该)在这里处理错误情况,可能是将错误分为多个步骤,也可能是将KeyError和IndexError捕获在一起。作为一种选择,请查看suppress(docs)中最新的contextlib实用程序。看起来像这样:

>>> with suppress(KeyError, IndexError):
...     ph = data['Key2'][0]['PhoneNumber']
...
>>> ph
'180000000000'



Similar searches
    使用pod 迅速:将对象转换为字典无法正常工作 如何在Flask中重定向? 函数调用返回时,压入堆栈的参数会怎样? 返回一个仅针对数据库中要循环通过的查询集