我在有效地将PhoneNumber值存储在下面的代码段中时遇到了麻烦 因此,完成上述操作后,我得到了一个字典“数据”,如下所示: 目标是仅获取PhoneNumber值,即 因此,在上述数据现在= 当以这种方式存储它时,当我从S3中提取值时,我必须使用'with gzip.open'并对其进行解码 答案 0 :(得分:1) 不需要对 您也可以(可能应该)在这里处理错误情况,可能是将错误分为多个步骤,也可能是将true
response = requests.get(api)
data = json.loads(response.text)
{'Key1': 'Some Value ', 'Key2': [{'PhoneNumber': '180000000000'}]}
,而我的第一个反应是下面的工作方式,但我知道这不会很好地扩展。我想知道是否可以在上面的json.loads调用中传递参数,或者是否有人对如何更有效地获取此值有其他建议,我对此感兴趣。 '180000000000'
data = data['Key2'][0]['PhoneNumber'])
之后,我想将其存储在'180000000000'
中,我有一个用于JSON文件的旧代码(如下),这有效,但是毫无意义。我只需要将电话号码存储为文本文件(我知道如何与open for .txt结合使用,但是我对如何使用io.Bytes以及是否应该使用SringIO而不是BytesIO感到困惑)s3
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'