У меня есть следующий элемент, который я проанализировал из <table>
<td align="center" valign="top">
<a href="ConfigGroups.aspx?cfgID=451161&prjID=11778&grpID=DTST"
target="_blank">
5548U
</a><br/>Power La Vaca<br/>(M8025K)<br/>Linux 4.2.x.x<br/>
</td>
Я пытаюсь извлечь из этого элемента «55488 Power La Vaca (8025K) Linux 4.2.x.x» (включая пробелы).
import lxml.etree as ET
td_html = """
<td align="center" valign="top">
<a href="ConfigGroups.aspx?cfgID=451161&prjID=11778&grpID=DTST"
target="_blank">
5548U
</a><br/>Power La Vaca<br/>(M8025K)<br/>Linux 4.2.x.x<br/>
</td>
"""
td_elem = ET.fromstring(td_html)
fail_1 = td_elem.find('a').text + td_elem.text
print "FAIL_1", fail_1
print "FAIL_2"
for elem in td_elem.iterchildren():
print elem.tag, elem.text
Результаты
$ python textxml.py
FAIL_1
5548U
FAIL_2
a
5548U
br None
br None
br None
br None
$
Вопрос
Унизительно, что я должен задать этот вопрос, поскольку не похоже, что это должно быть трудно.
Как извлечь «Power La Vaca (8025K) Linux 4.2.x.x» из элемента td_elem
(включая пробелы)?
Пожалуйста, никаких регулярных выражений.
Решение
Явное решение (используя предложение Финна itertext()
):
import lxml.etree as ET
td_html = """
<td align="center" valign="top">
<a href="ConfigGroups.aspx?cfgID=451161&prjID=11778&grpID=DTST"
target="_blank">
5548U
</a><br/>Power La Vaca<br/>(M8025K)<br/>Linux 4.2.x.x<br/>
</td>
"""
td_elem = ET.fromstring(td_html)
print "SUCCESS", ' '.join([txt.strip() for txt in td_elem.itertext()])