我是从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'>"
谢谢!
答案 0 :(得分:0)
您使用什么版本的Python?
在Python 2中,需要转换Unicode 但是在Python 3中,这是自动完成的,但是您可以使用以下代码段:
uni_var = str(myvar["configData"]["audios"]["message_audio"]["uri"])
print(uni_var)