在XML文件中查找文本并输出一个元素

时间:2018-08-02 06:11:56

标签: python xml search

<data>
<number>
1
</number>
<text>
abc def
</text>
<number>
2
</number>
<text>
fhi jklmn
</text>
</data>

我想编写一个Python程序,该程序在XML文件中搜索给定的文本并输出相应的元素。

例如,在上面的代码中,如果给定了“ jkl”,我想要一个输出“ 2”,给定“ abc”,我想要一个“ 1”。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以使用BeautifulSoup导航XML:

from bs4 import BeautifulSoup

data = """<data>
<number>
1
</number>
<text>
abc def
</text>
<number>
2
</number>
<text>
fhi jklmn
</text>
</data>"""

soup = BeautifulSoup(data, 'xml')
text = input('Please input your text : ')
t = soup.find(lambda t: False if t.name != 'text' else text in t.string)
if t:
    number = t.findPrevious('number').text.strip()
    print('Text {} found, the number is {}'.format(text, number))
else:
    print('Text {} not found'.format(text))

这将为用户输入字符串,并尝试在<text>标签中找到该字符串。如果找到,它将打印包含在<number>中的值。

示例:

Please input your text : abc
Text abc found, the number is 1

编辑:

要在所有标签中搜索给定的字符串,不仅要<text>,还需要将find()函数更改为:

t = soup.find(lambda t: False if not t.string else text in t.string)