You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用XPath合并<tr>元素对?基于Python的lxml.html实现

实现元素两两合并分组的解决方案

可以直接通过先获取所有元素,再用Python逻辑两两分组的方式实现需求,用lxml.html的代码示例如下:

步骤1:获取全部元素

先解析HTML并提取所有节点:

from lxml import html

# 替换为你的HTML内容
html_content = """
<table>
    <tr><td>行1</td></tr>
    <tr><td>行2</td></tr>
    <tr><td>行3</td></tr>
    <tr><td>行4</td></tr>
    <tr><td>行5</td></tr>
</table>
"""
tree = html.fromstring(html_content)
all_tr = tree.xpath('//tr')

步骤2:两两分组元素

利用Python列表切片,将列表按每2个元素一组拆分:

# 按顺序两两分组,若最后剩余单个元素则单独成组
paired_trs = [all_tr[i:i+2] for i in range(0, len(all_tr), 2)]

执行后paired_trs的结构为:[[tr1, tr2], [tr3, tr4], [tr5]]

步骤3:处理合并逻辑(可选)

如果需要将每组的两个节点合并(比如把第二个的内容合并到第一个中),可以遍历分组后的列表操作:

for pair in paired_trs:
    if len(pair) == 2:
        tr_first, tr_second = pair
        # 将第二个<tr>的所有子元素追加到第一个<tr>中
        for child in tr_second.getchildren():
            tr_first.append(child)
        # 移除第二个<tr>节点
        tr_second.getparent().remove(tr_second)

这种方式比纯XPath实现更灵活,因为XPath的核心是元素选择,而分组、合并这类逻辑用Python原生语法处理更直观易维护。

内容的提问来源于stack exchange,提问作者user1050755

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 23:19:00