Na czym to polega w sklepie
Funkcja normalize(form, text) przekształca łańcuch Unicode do formy NFC lub NFKD. W feedach produktowych różne źródła wysyłają „é" jako jeden znak lub e+akcent - bez normalizacji join po nazwie zwraca fałszywe braki dopasowania.
Przykład ze sklepu internetowego
Porównujesz tytuł produktu z feedu XML i eksportu ERP przed uploadem do Merchant Center:
import unicodedata
def normalize_title(title: str) -> str:
nfkd = unicodedata.normalize("NFKD", title.strip())
ascii_folded = "".join(c for c in nfkd if not unicodedata.combining(c))
return ascii_folded.casefold()
normalize_title("Kurtka Softshell") == normalize_title("kurtka softshell")
# True po casefold
Co zrobić po stronie biznesu
- Deduplikacja SKU po tytule gdy brak stabilnego item_id między systemami.
- Czyszczenie znaków specjalnych przed hashowaniem PII (porównanie stringów).
- QA feedu - wykrywanie duplikatów produktów z różnym kodowaniem Unicode.
W skrócie
NFC do przechowywania, NFKD do agresywnego porównania. W feedach e-commerce normalizacja to pierwszy krok przed merge katalogów.