前言
在单片机开发过程中,我们时长会遇到一个问题,就是我们需要通过串口打印来检测设备的工作状态,比如我们1s 采集了一个设备的温度和加热功率。那么我们收到的数据包可能如下:
------------------------------------water_tempertura: 78
after buchang temp: 293
refresh keep warm time
[11:08:40.855]收←◆refresh keep warm time
current keep warming
adc_raw5: 2131
BASE_temp: 293
------------------------------------water_tempertura: 78
after buchang temp: 293
[11:08:41.856]收←◆current keep warming
adc_raw5: 2135
BASE_temp: 292
------------------------------------water_tempertura: 78
after buchang temp: 292
refresh keep warm time
[11:08:42.855]收←◆refresh keep warm time
current keep warming
adc_raw5: 2135
BASE_temp: 292
上述简单展示了3s的采集数据,但是如何这个数据量特别大,比如5000s的数据,我们要分析就比较困难,此时我们会要用表格来梳理形成曲线图,这样方便我们进行分析。
数据处理
1、我们将数据的txt,直接给AI 进行处理。但是AI的处理文本token是有限的,少数据倒是问题不大,但是当数据量比较大的时候,AI就无法处理了
2,然后近期从同事那边了解到可以利用python的数据处理功能进行处理提取,并生成表格。
环境准备
安装vscode
安装python编译环境
python代码编写
import re
from openpyxl import Workbook
def process_file_and_create_excel(keywords):
with open("water4.txt", "r", encoding="utf-8") as file:
content = file.read()
workbook = Workbook()
worksheet = workbook.active
worksheet.title = "Results"
# 添加列标题
headers = [keyword.rstrip('/') for keyword in keywords.split('/')]
worksheet.append(headers)
# 初始化一个列表来存储匹配结果
results = []
# 对每个关键字进行搜索
for keyword in keywords.split('/'):
if keyword: # 确保关键字不为空water3
pattern = fr"{keyword.rstrip('/')}[^\d]*(\d+)"
matches = re.findall(pattern, content)
results.append(matches)
# 填充Excel表格
# 假设所有关键字匹配到的结果数量相同
max_length = max(len(result) for result in results)
for i in range(max_length):
row = [results[j][i] if i < len(results[j]) else '' for j in range(len(results))]
worksheet.append(row)
workbook.save("water4-outpput.xlsx")
# 用户输入的代码
keywords_input = input("读取完成,请键入关键字,以'/'分隔:")
process_file_and_create_excel(keywords_input)
我们只需要在当前py文件下,在python代码中,输入文件的路径。
输入要提取的字段名,然后以 / 结尾,
执行文件的输出名称。
最后输出表格到当前目录下
例如:输入的提取变量键名为:
BASE_temp/tempertura/power/