简体   繁体   English

python 从请求响应中提取元素

[英]python Extract element from requests response

i received this from an http request:我从 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}

This is stored in a var.这存储在一个 var 中。

Then if i do this, this works perfectly:然后,如果我这样做,这将非常有效:

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

But if i go one step further:但如果我 go 更进一步:

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

This fails miserably?这惨败? Why does this happen: uri is simply a parameter in "message_audio" when i do this:为什么会发生这种情况:当我这样做时,uri 只是“message_audio”中的一个参数:

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

I'm getting我越来越

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

Traceback (most recent call last)

Output should be Output 应该是

'https://...'

Can anyone help?任何人都可以帮忙吗?

UPDATE:更新:

printing:印刷:

One level above: print('[%s]: Audio URI: "%s"\n' % (session_sip_call_id, type(CData.get("configData",None).get("audios",None).get("message_audio",None)) ) )上一层: print('[%s]: Audio URI: "%s"\n' % (session_sip_call_id, type(CData.get("configData",None).get("audios",None).get( “message_audio”,无))))

Prints: Audio URI: ""打印:音频 URI:“”

But: print('[%s]: Audio URI: "%s"\n' % (session_sip_call_id, type(CData.get("configData",None).get("audios",None).get("message_audio",None).get("uri",None)) ) )但是: print('[%s]: Audio URI: "%s"\n' % (session_sip_call_id, type(CData.get("configData",None).get("audios",None).get("message_audio) ",None).get("uri",None)) ) )

returns:返回:

Audio URI: "<type 'unicode'>"

thanks!谢谢!

What version of Python do you use?你用的是什么版本的Python?

In Python 2, Unicode needed to be converted But in Python 3, this is done automatically, however you can use the following code snippet:在 Python 2 中,需要转换 Unicode 但在 Python 3 中,这是自动完成的,但是您可以使用以下代码段:

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

print(uni_var)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM