Python es uno de los lenguajes más usados para procesar datos en Chile. Esta función valida y formatea RUTs usando el algoritmo Módulo 11.
def calcular_dv(cuerpo: str) -> str:
serie = [2, 3, 4, 5, 6, 7]
suma = sum(int(d) * serie[i % 6] for i, d in enumerate(reversed(str(cuerpo))))
resto = 11 - (suma % 11)
if resto == 11: return '0'
if resto == 10: return 'K'
return str(resto)
def validar_rut(rut: str) -> bool:
clean = ''.join(c for c in rut.upper() if c.isdigit() or c == 'K')
if len(clean) < 2:
return False
cuerpo, dv = clean[:-1], clean[-1]
return calcular_dv(cuerpo) == dv
def formatear_rut(rut: str) -> str:
clean = ''.join(c for c in rut.upper() if c.isdigit() or c == 'K')
cuerpo, dv = clean[:-1], clean[-1]
# Agregar puntos
cuerpo_con_puntos = ''
for i, c in enumerate(reversed(cuerpo)):
if i > 0 and i % 3 == 0:
cuerpo_con_puntos = '.' + cuerpo_con_puntos
cuerpo_con_puntos = c + cuerpo_con_puntos
return f"{cuerpo_con_puntos}-{dv}"
# Pruebas
print(validar_rut('12.345.678-5')) # True
print(validar_rut('12345678-9')) # False
print(formatear_rut('123456785')) # 12.345.678-5
Preguntas frecuentes
¿Funciona con pandas para validar columnas de RUTs?
Sí: df['rut_valido'] = df['rut'].apply(validar_rut) aplica la función a toda una columna.