<data>
<number>
1
</number>
<text>
abc def
</text>
<number>
2
</number>
<text>
fhi jklmn
</text>
</data>
我想编写一个Python程序,该程序在XML文件中搜索给定的文本并输出相应的元素。
例如,在上面的代码中,如果给定了“ jkl”,我想要一个输出“ 2”,给定“ abc”,我想要一个“ 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)