一行报文 / 原始文本
"T:25.3 H:60.2 PM2.5:38"
先当字符串处理:清洗空格、按分隔符拆开,再逐段转成数值。
科研自动化课程 · 课前装备
这门课会反复遇到传感器报文、实验记录表、云端 JSON、阈值控制与图表。 这里不讲整本 Python,只讲课前最需要的四件事:看懂数据形态、读写实验数据、理解类和库、亲手跑通采集到控制的链路。
模块 A · 数据形态与容器
同一个实验里会出现不同长相的数据。写代码之前先回答三个问题:一共有几条记录? 每条记录有几个值?后续要按字段名查找还是按顺序遍历?
"T:25.3 H:60.2 PM2.5:38"
先当字符串处理:清洗空格、按分隔符拆开,再逐段转成数值。
{"time":"09:31","temp":25.3,"hum":60.2}
同一个时间点有多个字段,适合用字典保存字段名与数值。
[25.3, 25.8, 26.1, 25.9]
只关心顺序和长度时用列表,例如连续一小时温度序列。
[{"time":"09:00","temp":25.3}, {"time":"09:01","temp":25.8}]
一批结构相同的记录适合“列表套字典”,每行是一条字典。
一条看文本细节,多条准备“逐行循环”。
单个值可用列表;多个值必须想清楚哪些是字段。
以后要写 row["temp"] 就选字典;只做序列运算就选列表。
输入是 "T:25.3 H:60.2 PM2.5:38",第一件要做的事是?
连续一小时每分钟记一个温度,只想算平均和最高,容器选?
点击“运行 Python”后显示结果。
模块 B · 字符串拆分与数据读写
传感器常把多个值拼在一行里;实验软件又把多行记录存成 CSV 或 JSON。 课前要会的是三步:去掉多余空格、按分隔符拆开、把带名字的记录写回标准格式。
CSV 的第一行是字段名,之后每行是一条记录。
csv.DictReader 负责表头映射,比手工切片更少出错。
写 CSV 使用 utf-8-sig,Excel 打开中文不会乱码。
文件不会离开浏览器。上传后内容进入输入框,用同一套 Python 解析并展示成记录。
with open("lab_log.csv", "w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=headers)
writer.writeheader()
writer.writerows(records)
可先运行示例,再上传自己的 CSV。
模块 C · 类和库
不熟悉类与库时,先不要读实现源码。先问这个库给我什么输入、我取什么输出; 再问哪些函数和数据总一起出现,那部分才适合封装成类。
输入 JSON 文本,输出字典或列表;API 回包最常见。
第 6 周 Uni-Lab输入带表头的表格,输出一行一个字典。
第 3-7 周记录存储输入 SQL 与记录,输出可查询的本地表。
第 6 周数据管理输入 URL 与参数,输出响应;先用 .json() 取数据。
输入序列或字段,输出折线、散点与拟合结果。
第 7-8 周表征与可视化两条示例会分别演示 json + sqlite3 与 Sensor 类。
模块 D · 仿真实验台
页面用仿真设备代替真实硬件。启动采集后,设备持续输出报文; 点击动作按钮可以看到“解析入库、阈值控制、绘图展示”各自对应的 Python 实现与页面状态。
| 时间 | 温度 | 湿度 |
|---|
先启动采集,再选择上方动作。
课前自测