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