elasticsearch,escaping,pyes,Python,elasticsearch,Escaping,Pyes" /> elasticsearch,escaping,pyes,Python,elasticsearch,Escaping,Pyes" />

pyes创建名称中带有冒号的Python对象,can';t地址

pyes创建名称中带有冒号的Python对象,can';t地址,python,elasticsearch,escaping,pyes,Python,elasticsearch,Escaping,Pyes,我想我在这里遗漏了一些非常明显的东西,但不知何故我不能完全理解——我使用pyes非常直接地查询ElasticSearch端点,这样我就可以通过执行以下操作来访问结果 打印结果。点击次数。点击次数。\u source.mets 并获得一个完整的JSON,如预期的那样,以Python dict表示: {u'ns0:mets_-list':[{u'@xmlns:ns0:u'',u'@xmlns:ns3:u'',u'@xmlns:ns2:u'info:lc/xmlns/premis-v2',u'@xml

我想我在这里遗漏了一些非常明显的东西,但不知何故我不能完全理解——我使用pyes非常直接地查询ElasticSearch端点,这样我就可以通过执行以下操作来访问结果

打印结果。点击次数。点击次数。\u source.mets

并获得一个完整的JSON,如预期的那样,以Python dict表示:

{u'ns0:mets_-list':[{u'@xmlns:ns0:u'',u'@xmlns:ns3:u'',u'@xmlns:ns2:u'info:lc/xmlns/premis-v2',u'@xmlns:ns4:u'',u'ns0:amdSec_-list':[{u'ns0:techMD list':[{u'ns0:mdWrap_-list':[{u'@MDTYPE':u'premis OBJECT

然而,当我尝试深入几个层次时,我遇到了一个问题:一些键名中有冒号。我尝试了我能想到的每一个聪明的解决方案,使用各种斜杠和QUTOE组合来逃避这些,但不知何故,我无法完全理解,所以我一直在冒号上出现语法错误:

打印结果.hits.hits[0]。_source.mets.ns0:mets_list.ns0:fileSec_list

有人介意指出我在这里缺少的愚蠢的东西吗?不幸的是,我需要为这个项目使用稍微过时的pyes版本,所以我不想过于依赖当前的文档,虽然我对unicode解码在Python中的正常工作有一些了解,但它并没有揭示简单的解决方案

谢谢

print getattr(results.hits.hits[0]._source.mets,"ns0:mets_list")

可能有用

也许你想要的对象是
results.hits.hits[0]。\u source.mets[u'ns0:mets\u list']

事实上,废话,不——昨晚几个小时后不应该测试它。看起来它仍然只返回到{mets},下面的所有内容都被忽略了。就是这样。我在往下走的过程中必须更明确地说明深度,但我可以通过打印结果来实现。hits.hits[0]。_source.mets[u'ns0:mets_list'][0][u'ns0:fileSec_list']。