python从请求响应中提取元素

时间:2020-06-18 12:50:38

标签: python json dictionary

我是从http请求中收到的:

{u'accountDirectDialId': u'...', u'number': u'...', u'messageType': u'simple_message', u'configData': {u'audios': {u'message_audio': {u'duration': None, u'hashFile': u'...', u'id': u'16990559-acb9-11ea-af69-522c847d095a', u'name': None, u'uri': u'https://...'}}}, u'inboundCallerId': u'...', u'maxDestinationRetry': 1, u'hasVoicemail': False, u'voIp': {u'codePhone': 00}, u'hasMessage': True}

此内容存储在var中。

然后,如果我这样做,那么效果很好:

myvar["configData"]["audios"]["message_audio"] 

但是,如果我再走一步:

myvar["configData"]["audios"]["message_audio"]["uri"] 

这失败了! 为什么会这样? uri只是“ message_audio”中的一个参数 当我这样做时:

print('Audio URI: "%s"\n' % type(myvar["configData"]["audios"]) )

我要

Python Error by calling script "mass": <type 'exceptions.TypeError'>
Message: string indices must be integers, not str
Exception: None

Traceback (most recent call last)

输出应为

'https://...'

有人可以帮忙吗?

更新:

打印:

以上一级: print('[%s]:音频URI:“%s” \ n'%(session_sip_call_id,type(CData.get(“ configData”,None).get(“ audios”,None).get(“ message_audio”,无)))))

打印: 音频URI:“”

但是: print('[%s]:音频URI:“%s” \ n'%(session_sip_call_id,type(CData.get(“ configData”,None).get(“ audios”,None).get(“ message_audio”, None).get(“ uri”,None))))

返回:

Audio URI: "<type 'unicode'>"

谢谢!

1 个答案:

答案 0 :(得分:0)

您使用什么版本的Python?

在Python 2中,需要转换Unicode 但是在Python 3中,这是自动完成的,但是您可以使用以下代码段:

uni_var = str(myvar["configData"]["audios"]["message_audio"]["uri"])

print(uni_var)