pyes创建名称中带有冒号的Python对象,无法解决

时间:2014-07-21 21:31:33

标签: python elasticsearch escaping pyes

我想我在这里遗漏了一些非常明显的东西,但不知何故我无法理解它 - 我正在使用pyes非常直接地查询ElasticSearch端点,以便我可以通过执行类似的操作来访问结果

  
    

print results.hits.hits._source.mets

  

并按照预期的那样获得表达为Python dicts的JSON的全部内容:

  
    

{u'ns0:mets_list':[{u'@ xmlns:ns0':u'http://www.loc.gov/METS/',u'@ xmlns:ns3':u'http://hul.harvard.edu/ois/xml/ns/fits/fits_output',u'@ xmlns:ns2':u'info:lc / xmlns / premis-v2',u'@ xmlns:ns4':u'http://www.w3.org/1999/xlink',u'ns0:amdSec_list':[{u'ns0:techMD_list' :[{u'ns0:mdWrap_list':[{u'@ MDTYPE':u'PREMIS:OBJECT'...

  
但是,当我尝试更深入一些时,我遇到了一个问题:一些关键名称中有冒号。我已经尝试过每个聪明的解决方案,我可以想到使用斜杠和qutoes的各种组合来逃避这些,但不知何故,我无法弄明白,所以我不断在冒号上得到语法错误:

  
    

print results.hits.hits [0] ._ source.mets.ns0:mets_list.ns0:fileSec_list

  

有人心里指出我在这里失踪的蠢事吗?不幸的是,我需要为这个项目使用一个稍微过时的pyes版本,所以我不想过于依赖当前的文档,虽然我对unicode解码通常如何在Python中运行有所了解,但它并没有揭示简单的解决方案

谢谢!

2 个答案:

答案 0 :(得分:0)

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

可能有效

答案 1 :(得分:0)

也许你想要的对象是results.hits.hits[0]._source.mets[u'ns0:mets_list']