---
id: normalize_for_join_py_core
name: normalize_for_join
kind: function
lang: py
domain: core
version: "1.0.0"
purity: pure
signature: "def normalize_for_join(values: Iterable) -> list[str]"
description: "Normaliza strings para fuzzy joins: upper + strip diacriticos NFD + elimina non [A-Z0-9 ] + colapsa espacios. Trabaja con cualquier iterable. None/NaN -> cadena vacia."
tags: [string, normalization, join, fuzzy, spain, pendiente-usar]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: ""
imports: ["re", "unicodedata", "typing.Iterable"]
example: |
  from normalize_for_join import normalize_for_join
  normalize_for_join(["Calle Mayor, 14", "avila", None])
  # ["CALLE MAYOR 14", "AVILA", ""]
tested: true
tests: ["normalize con puntuacion y diacriticos y None"]
test_file_path: "python/functions/core/tests/test_normalize_for_join.py"
file_path: "python/functions/core/normalize_for_join.py"
params:
  - name: values
    desc: "Iterable de strings o None/NaN a normalizar. Acepta listas, generadores, pd.Series, etc."
output: "Lista de strings normalizados en mayusculas sin diacriticos. None y NaN se convierten a cadena vacia."
source_repo: "internal:footprint_aurgi"
source_license: "internal-aurgi"
source_file: "fuzzy_joins/arreglo_fuzzy.py"
---

## Ejemplo

```python
from normalize_for_join import normalize_for_join

normalize_for_join(["Calle Mayor, 14", "ávila", None])
# ["CALLE MAYOR 14", "AVILA", ""]

normalize_for_join(["José García S.L.", "BANCO DE ESPAÑA"])
# ["JOSE GARCIA SL", "BANCO DE ESPANA"]
```

## Notas

Funcion pura sin dependencias externas (solo `re` y `unicodedata` de stdlib).
Adaptada de `preparar_para_join` / `normalizar_string` en `fuzzy_joins/arreglo_fuzzy.py`,
eliminando la dependencia de pandas para trabajar con cualquier iterable.
Util como paso previo a joins por igualdad exacta sobre datos normalizados.
