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

如何用Python提取BDD格式feature文件表格并转为列表、字典或DataFrame

Python提取BDD Feature文件表格数据实现方案

直接通过正则匹配提取表格内容,轻量无需依赖额外的BDD解析库,实现代码如下:

import re
import pandas as pd

# 读取本地feature文件可替换为以下代码
# with open("你的feature文件路径.feature", "r", encoding="utf-8") as f:
#     feature_content = f.read()

# 示例feature内容
feature_content = """
Scenario: some scenario
Given a set of specific users
| name | department |
| Barry | Beer Cans |
| Pudey | Silly Walks |
| Two-Lumps | Silly Walks |
When we count the number of people in each department
Then we will find two people in "Silly Walks"
But we will find one person in "Beer Cans"
"""

# 匹配所有带|的表格行
table_rows = re.findall(r"^\s*\|.*\|\s*$", feature_content, flags=re.MULTILINE)
processed_rows = []
for row in table_rows:
    # 去除首尾的|和空格,拆分后清洗每个单元格的前后空格
    cells = [cell.strip() for cell in row.strip().strip("|").split("|")]
    processed_rows.append(cells)

# 拆分表头和数据行
headers = processed_rows[0]
data_rows = processed_rows[1:]

# 组装为要求的输出格式
names = [row[0] for row in data_rows]
department = [row[1] for row in data_rows]
res_dict = {"Name": names, "Department": department}
# 转换为DataFrame格式
df = pd.DataFrame(res_dict)

# 打印验证结果
print("names =", names)
print("department =", department)
print("结果字典 =", res_dict)
print("DataFrame格式数据:\n", df)

运行后输出结果如下:

names = ['Barry', 'Pudey', 'Two-Lumps']
department = ['Beer Cans', 'Silly Walks', 'Silly Walks']
结果字典 = {'Name': ['Barry', 'Pudey', 'Two-Lumps'], 'Department': ['Beer Cans', 'Silly Walks', 'Silly Walks']}
DataFrame格式数据:
          Name   Department
0       Barry    Beer Cans
1       Pudey  Silly Walks
2  Two-Lumps  Silly Walks

如果需要处理多表格的feature文件,只需要增加前置逻辑定位到目标场景对应的表格范围再做提取即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 04:45:03