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

Python中如何解析报表文件的多行表头并获取对应数据?

合并两行表头并提取报表数据的方案

当然可以通过合并两行表头来精准匹配数据,替代靠标记的粗糙方式,具体步骤如下:

1. 表头合并规则

观察报表的两行表头,对应关系很明确:

  • 第一行的Source和Destination下方无二级表头,直接保留原名称
  • 第一行的Arrival对应第二行的Expected和Actual,合并为Arrival Expected、Arrival Actual
  • 第一行的Departure对应第二行的Expected和Actual,合并为Departure Expected、Departure Actual

最终合并后的完整表头为:
Source、Arrival Expected、Arrival Actual、Departure Expected、Departure Actual、Destination

2. 具体实现(以Python为例)

步骤1:解析报表文本并合并表头

# 原始报表文本
report_text = """Source   Arrival   Arrival   Departure   Departure   Destination
         Expected  Actual    Expected    Actual      
X        10:00     10:15     10:10       10:25       Z
A        8:30      8:30      8:45        8:50        B"""

# 拆分并清洗行数据
lines = [line.strip() for line in report_text.split('\n') if line.strip()]

# 提取两行表头
header_row1 = lines[0].split()
header_row2 = lines[1].split()

# 按对应规则合并表头
merged_headers = [
    header_row1[0],
    f"{header_row1[1]} {header_row2[0]}",
    f"{header_row1[2]} {header_row2[1]}",
    f"{header_row1[3]} {header_row2[2]}",
    f"{header_row1[4]} {header_row2[3]}",
    header_row1[5]
]

步骤2:提取数据并映射到表头

# 处理数据行,生成结构化字典
records = []
for data_line in lines[2:]:
    data_values = data_line.split()
    # 将数据与合并后的表头一一对应
    record = dict(zip(merged_headers, data_values))
    records.append(record)

运行后得到的结构化数据示例:

{'Source': 'X', 'Arrival Expected': '10:00', 'Arrival Actual': '10:15', 'Departure Expected': '10:10', 'Departure Actual': '10:25', 'Destination': 'Z'}
{'Source': 'A', 'Arrival Expected': '8:30', 'Arrival Actual': '8:30', 'Departure Expected': '8:45', 'Departure Actual': '8:50', 'Destination': 'B'}

步骤3:生成HTML表格

基于结构化数据直接生成HTML表格,确保数据与表头准确对应:

# 拼接HTML表格代码
html_table = """<table border="1">
    <thead>
        <tr>""" + ''.join([f"<th>{h}</th>" for h in merged_headers]) + """
        </tr>
    </thead>
    <tbody>"""

for record in records:
    html_table += """
        <tr>""" + ''.join([f"<td>{record[h]}</td>" for h in merged_headers]) + """
        </tr>"""

html_table += """
    </tbody>
</table>"""

生成的HTML表格会直接展示合并后的完整表头,以及对应的数据内容,不需要依赖标记定位。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 08:06:03