我在XML文件上有这样的详细信息
<note>
<id>51</id>
<Name>Jani</Name>
<city>Frankfurt</city>
<IQ>Intelligent</IQ>
</note>
<note>
<id>71</id>
<Name>Peter</Name>
<city>Paris</city>
<IQ>Average</IQ>
</note>
<note>
<id>81</id>
<Name>Asho</Name>
<city>Paris</city>
<IQ>Intelligent</IQ>
</note>
鉴于这些细节,我想实现一个搜索引擎,该搜索引擎应该允许用户搜索文件中的所有'Intelligent'
人。
请建议我在python中做到最好的方法。
答案 0 :(得分:1)
使用lxml和XPath:
from StringIO import StringIO
from lxml import etree
xml = """<root>
<note>
<id>51</id>
<Name>Jani</Name>
<city>Frankfurt</city>
<IQ>Intelligent</IQ>
</note>
<note>
<id>71</id>
<Name>Peter</Name>
<city>Paris</city>
<IQ>Average</IQ>
</note>
<note>
<id>81</id>
<Name>Asho</Name>
<city>Paris</city>
<IQ>Intelligent</IQ>
</note>
</root>"""
tree = etree.parse(StringIO.StringIO(xml))
for note in tree.xpath("//note[IQ='Intelligent']"):
print note.getchildren()[1].tag + "=" + note.getchildren()[1].text
打印:
Name=Jani
Name=Asho
答案 1 :(得分:0)
如果文件很小,那么libary xml.mindom可以为您提供一个易于转换的数据结构 如果文件较大,我建议使用xml.etree.cElementTree
另外,您可以根据需要预先填写文件,例如: 制作一个包含相关数据的元组/列表的字典(或列表,如果使用了所有数字ID) 然后创建一个名称,城市和IQ字典,其中包含带有ID的列表:
注意[51] =(51,'Jani','法兰克福','智能')
和
iq_dict ['智能'] =(81,51)
等。