Funciona siempre bien, si las dos últimas palabras son apellidos (con o sin palabras especiales)
Nombre1 Apellido1
Apellido2 Nombre1
Nombre2 Apellido1 Apellido2
Nombre1 [del,de ...] Nombre2 [del,de ...] Apellido1 [del,de ...] Apellido2 Nombre1 Apellido1
No funciona bien con :
Nombre1 Nombre2 Apellido1
Siempre da por supuesto que si hay al menos 3 palabras, las dos últimas forman el apellido:
def obtenerNombrePassswd(cadena): lista = cadena.split(" ") especiales = ['da', 'de', 'del', 'la', 'las', 'los', 'mac', 'mc', 'van', 'von', 'y', 'i', 'san', 'santa'] salida = list() for m in reversed(lista): if ( (len(salida) > 0 and (m.upper() in map(str.upper, especiales))) or ((len(salida) > 2) ) ): salida[-1] = str(m) + ' ' + salida[-1] else: salida.append(m) nombre = str(salida[-1]) if len(salida) >1: apellido1 = salida[-2] if len(salida) == 3: apellido2 = salida[0] apellidos = " ".join(salida[:-1]) return [ nombre, apellidos]
No hay comentarios:
Publicar un comentario