feat: add flight_quality/parser.py
This commit is contained in:
17
flight_quality/parser.py
Normal file
17
flight_quality/parser.py
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user