-2

我在 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 中做到这一点的最佳方法。

4

2 回答 2

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
于 2013-06-14T09:28:38.300 回答
0

如果文件很小,则库 xml.mindom 可以为您提供易于转换的数据结构,如果文件较大,我建议使用 xml.etree.cElementTree

或者,您可以根据需要预先解析您的文件,例如:制作一个包含带有相关数据的元组/列表的 dict(或列表),然后制作一个包含带有 id 的列表的名称、城市和 IQ dict,例如:

注意[51] = (51,'Jani', '法兰克福', '智能')

iq_dict['智能'] = (81, 51)

ETC..

于 2013-06-14T09:22:21.500 回答