41 lines
994 B
Python
41 lines
994 B
Python
"""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)
|