如何用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
相关产品推荐
相关产品推荐

