从文本文件提取传感器值并按分组列写入Excel的方案求助
解决方案
思路说明
要实现分组按列写入Excel,核心是先从文本中提取对应分组的values数据,再分别写入不同列。以下用openpyxl库(支持现代xlsx格式,功能更完善)实现,步骤清晰直接:
代码实现
from openpyxl import Workbook # 初始化三个列表,分别存储三组传感器的values sen_a_values = [] sen_b_values = [] sen_c_values = [] # 读取文本文件并解析数据 with open('Testcase.txt', 'r') as f: # 跳过表头(如果文本第一行是字段名:Sensor编号、Sensor Name、Units、values) next(f) for line in f: # 按实际文本分隔符分割行数据,这里假设是逗号分隔;若为空格/tab,可改为split()或split('\t') parts = line.strip().split(',') if len(parts) < 4: continue # 跳过格式错误的行 sensor_id = parts[0].strip() value = parts[3].strip() # 判断传感器分组并将value存入对应列表 if sensor_id.startswith('SenA'): sen_a_values.append(value) elif sensor_id.startswith('SenB'): sen_b_values.append(value) elif sensor_id.startswith('SenC'): sen_c_values.append(value) # 创建Excel工作簿和工作表 wb = Workbook() ws = wb.active ws.title = 'Sensor Values' # 写入列标题 ws.cell(row=1, column=1, value='SenA组values') ws.cell(row=1, column=2, value='SenB组values') ws.cell(row=1, column=3, value='SenC组values') # 将三组数据分别写入对应列 max_rows = max(len(sen_a_values), len(sen_b_values), len(sen_c_values)) for row in range(2, max_rows + 2): # 写入SenA组数据 if row-2 < len(sen_a_values): ws.cell(row=row, column=1, value=sen_a_values[row-2]) # 写入SenB组数据 if row-2 < len(sen_b_values): ws.cell(row=row, column=2, value=sen_b_values[row-2]) # 写入SenC组数据 if row-2 < len(sen_c_values): ws.cell(row=row, column=3, value=sen_c_values[row-2]) # 保存Excel文件 wb.save('Sensor_Values.xlsx')
注意事项
- 若文本文件不是逗号分隔,需修改
split(','):空格分隔用split(),制表符分隔用split('\t')。 - 如果文本没有表头,删除
next(f)这一行即可。 - 代码自动处理三组传感器数量不一致的情况,空缺单元格会留空。
内容的提问来源于stack exchange,提问作者dee
相关产品推荐
相关产品推荐

