Более краткий способ с использованием BeautifulSoup
:
>>> soup('div', text='John')
[u'John']
>>> import re
>>> soup('div', text=re.compile('Jo'))
[u'John', u'Joe']
soup()
эквивалентен soup.findAll()
.Вы можете использовать строку, регулярное выражение, произвольную функцию для выбора того, что вам нужно.
stdlib's ElementTree
в вашем случае достаточно:
from xml.etree import cElementTree as etree
xml = """
<div>Bill</div>
<div>John</div>
<div>Joe</div>
"""
root = etree.fromstring("<root>%s</root>" % xml)
for div in root.getiterator('div'):
if "John" in div.text:
print(etree.tostring(div))