使用python创建搜索引擎(仅从XML文件中搜索)

时间:2013-06-14 09:17:41

标签: python

我在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中做到最好的方法。

2 个答案:

答案 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)

等。