"""Reglas de limpieza de texto / espacios.""" from __future__ import annotations import re import pandas as pd def _rule_strip_special_spaces(series: pd.Series) -> pd.Series: """Elimina todo lo que no sea alfanumérico (incluye espacios).""" pattern = re.compile(r"[^A-Za-z0-9]", flags=re.UNICODE) def _fn(x): if pd.isna(x): return x return pattern.sub("", str(x)) return series.map(_fn) def _rule_strip_special_keep_date_seps(series: pd.Series) -> pd.Series: """Conserva alfanuméricos, separadores de fecha '/', '-' y hora ':', y espacio.""" pattern = re.compile(r"[^A-Za-z0-9\/\-: ]", flags=re.UNICODE) def _fn(x): if pd.isna(x): return x return pattern.sub("", str(x)) return series.map(_fn) def _rule_strip_spaces(series: pd.Series) -> pd.Series: """Elimina únicamente espacios (incluidos tabs y saltos de línea).""" def _fn(x): if pd.isna(x): return x return re.sub(r"\s+", "", str(x)) return series.map(_fn)