gpt4 book ai didi

python - 解析 lxml.etree._Element 内容

转载 作者:太空狗 更新时间:2023-10-30 02:34:21 24 4
gpt4 key购买 nike

我从 <table> 中解析出以下元素

<td align="center" valign="top">
<a href="ConfigGroups.aspx?cfgID=451161&amp;prjID=11778&amp;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&amp;prjID=11778&amp;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
$

问题

我不得不问这个问题,这让我感到羞愧,因为它看起来并不难。

如何从 td_elem 中提取“Power La Vaca (8025K) Linux 4.2.x.x”元素(包括空格)?

请不要使用正则表达式解决方案。

解决方案

显式解决方案(使用 Finn 的建议 itertext() ):

import lxml.etree as ET
td_html = """
<td align="center" valign="top">
<a href="ConfigGroups.aspx?cfgID=451161&amp;prjID=11778&amp;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()])

最佳答案

我知道一定有更好的方法,但这行得通。

link = td_elem.find('a').text.strip()
text = ''.join(td_elem.itertext()).strip()
text.split(link)[1]

输出是 Power La Vaca(M8025K)Linux 4.2.x.x

更新:如果你想用空格代替那些<br>,这实际上更好。

' '.join(map(str, [el.tail for el in td_elem.iterchildren() if el.tail]))

map str这实际上并不需要,但我可以想象它的其他值(value)。

关于python - 解析 lxml.etree._Element 内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8729997/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com