From 38b6092af60024b06cb17ce02cfae2c2a9319bc9 Mon Sep 17 00:00:00 2001 From: xingchen <1098756313@qq.com> Date: Fri, 25 Sep 2026 11:57:00 +0800 Subject: [PATCH] feat: add flight_quality/parser.py --- flight_quality/parser.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 flight_quality/parser.py diff --git a/flight_quality/parser.py b/flight_quality/parser.py new file mode 100644 index 0000000..6b9b072 --- /dev/null +++ b/flight_quality/parser.py @@ -0,0 +1,17 @@ +import csv +from io import StringIO +from .model import Issue, Sample + + +def parse_csv(text: str) -> tuple[list[Sample], list[Issue]]: + samples, issues = [], [] + reader = csv.DictReader(StringIO(text)) + required = {"time_ms", "temperature_c", "voltage_v"} + if not reader.fieldnames or not required.issubset(reader.fieldnames): + return [], [Issue(1, "HEADER", "缺少必需列")] + for line, row in enumerate(reader, 2): + try: + samples.append(Sample(line, int(row["time_ms"]), float(row["temperature_c"]), float(row["voltage_v"]))) + except (TypeError, ValueError): + issues.append(Issue(line, "PARSE", "数值缺失或格式错误")) + return samples, issues