CSV-Escaping-Bug behoben, export.cfg-Mehrfachparsing beseitigt
format_csv_line() in export_csv.py/export_sivas.py hat Feldwerte per f-String direkt in doppelte Anfuehrungszeichen gesetzt, ohne ein eingebettetes '"' zu escapen (z.B. eine Bezeichnung mit Anfuehrungszeichen haette die Spaltengrenze der Zeile kaputt gemacht). Neuer gemeinsamer Helper csv_quote() (export_blockpatterns.py) verdoppelt eingebettete Anfuehrungszeichen nach RFC 4180. Ausserdem: export.cfg wurde bisher von vier unabhaengigen load_*-Funktionen (load_patterns, load_neighbor_tolerance_mm, load_omniflo_cell_size_mm, load_planquadrat_config) separat von der Platte gelesen und geparst. Neuer gemeinsamer, gecachter load_export_cfg() in export_blockpatterns.py sorgt dafuer, dass export.cfg pro Exportlauf nur noch einmal gelesen wird. Dabei auch die in export_csv.py bereits genutzte, aber in export_planquadrat.py fehlende resolve_origins()-Funktion (automatische Planquadrat-Ursprungs- Ermittlung) ergaenzt - ohne sie war der Import von export_csv.py gebrochen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+9
-9
@@ -41,7 +41,7 @@ import json
|
||||
import sys
|
||||
import os
|
||||
|
||||
from export_blockpatterns import load_patterns, matches_any
|
||||
from export_blockpatterns import load_patterns, matches_any, csv_quote
|
||||
from export_planquadrat import load_planquadrat_config, resolve_origins, compute_planquadrat
|
||||
from export_neighbors import (
|
||||
load_neighbor_tolerance_mm,
|
||||
@@ -502,15 +502,15 @@ def format_csv_line(item):
|
||||
merkmale_json = json.dumps(item["merkmale"], ensure_ascii=False)
|
||||
return (
|
||||
f'{item["nr"]}'
|
||||
f';"{item["teileart"]}"'
|
||||
f';"{item["teileid"]}"'
|
||||
f';"{item["bezeichnung"]}"'
|
||||
f';"{item["planquadrat"]}"'
|
||||
f';"{csv_quote(item["teileart"])}"'
|
||||
f';"{csv_quote(item["teileid"])}"'
|
||||
f';"{csv_quote(item["bezeichnung"])}"'
|
||||
f';"{csv_quote(item["planquadrat"])}"'
|
||||
f';1'
|
||||
f';"{item["position"]}"'
|
||||
f';"{item["boundingbox"]}"'
|
||||
f';"{item["nachbarn"]}"'
|
||||
f';"{item["fehler"]}"'
|
||||
f';"{csv_quote(item["position"])}"'
|
||||
f';"{csv_quote(item["boundingbox"])}"'
|
||||
f';"{csv_quote(item["nachbarn"])}"'
|
||||
f';"{csv_quote(item["fehler"])}"'
|
||||
f';{merkmale_json}'
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user