Messy text to rows

Parse messy.csv lines.

Real files mix ;, ,, and |. Split on a class of separators, then print rows.

Goal

Turn messy.csv-shaped lines into (city, units, price).

import re
lines = ["Nairobi ; 12 ; 10.5", "Mombasa,9,22.0", "Kisumu | 2 | 31.0"]
for line in lines:
    parts = [p.strip() for p in re.split(r"[|;,]", line)]
    print(parts)
import re
line = "Nairobi ; 12 ; 10.5"
city, units, price = [p.strip() for p in re.split(r"\s*;\s*", line)]
print(city, int(units), float(price))
from pathlib import Path
import re
Path("messy.csv").write_text("Nairobi ; 12 ; 10.5\nMombasa,9,22.0\n", encoding="utf-8")
rows = []
for line in Path("messy.csv").read_text(encoding="utf-8").splitlines():
    parts = [p.strip() for p in re.split(r"[|;,]", line) if p.strip()]
    rows.append(parts)
print(rows)
import re
print(re.findall(r"[A-Za-z]+", "Nairobi ; 12 ; 10.5"))