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