Przejdź do treści

Python. Funkcja unicodedata.normalize(). Normalizacja nazw produktów w feedzie.

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.