Files
starcodedoc-demo-python-fli…/flight_quality/parser.py

18 lines
730 B
Python

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