Tuesday, 27 January 2026

Sailwave → Spreadsheet: using Python as the “glue” between two programmes

 


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