Sailwave → Spreadsheet: using Python as the “glue” between two programmes
Sailwave is brilliant at race administration. Spreadsheets are brilliant at analysis. The only annoying bit is the squishy middle: getting consistent, tidy race data out of Sailwave and into a format that your handicap calculations can trust.
That’s where Python earns its tea and biscuits.
Instead of manually copying results (and accidentally turning “1.0” into “10” or “RET” into “0”), a short Python script can:
-
Grab Sailwave results (CSV export, HTML export, or a saved results file)
-
Standardise boat names / helm names (goodbye “Phil R”, “P Russell”, and “Philip Russell” as three separate people)
-
Normalise codes like DNC/DNF/RET/DSQ
-
Output a clean results table ready for your “Personal Handicap” spreadsheet
-
Optionally append straight into an .xlsx file so the whole thing becomes one seamless workflow
In other words: Sailwave stays your race tool, Excel stays your analysis tool, and Python quietly acts as the bridge that stops humans doing repetitive, error-prone admin.
The practical workflow (simple + robust)
Step 1 — Export from Sailwave
Most clubs can export race results as CSV or HTML. CSV is easiest to automate.
Your goal is a file that contains (at minimum):
-
Helm / Boat / Class (optional)
-
Race number / Date
-
Corrected time or points (depending on your approach)
-
Finish code (DNC/DNF/RET/DSQ) if present
Step 2 — Parse + tidy in Python
Step 3 — Feed the spreadsheet
Now your handicap spreadsheet can reliably:
-
filter out DNC/DNF/RET etc
-
weight recent races more heavily
-
compare “expected vs actual” using PY/PN
-
compute a rolling personal adjustment
If you want the script to write directly into an Excel sheet (instead of outputting a CSV), tell me what your workbook + sheet are called and I’ll give you a clean openpyxl version that appends data to a table without breaking formatting.
Why this matters for Personal Handicaps
Personal handicaps live or die on data quality.
A single inconsistent helm name, a missing DNF marker, or one race imported twice can skew the numbers enough to start arguments in the dinghy park (and nobody needs that before tea).
Python helps because it’s:
-
repeatable (same rules every time)
-
auditable (you can see exactly how values are treated)
-
extendable (add name matching, boat changes, discard rules, weighting, outlier rejection…)
And best of all: once it works, you press go and it just… does it.

No comments:
Post a Comment