Python analiza los apellidos más populares
Primero recopile una lista de apellidos comunes, obtenga el primer carácter del nombre y luego combínelo en la lista de apellidos. Si lo encuentra, entonces el apellido es este carácter. Si no lo encuentra, intente con los dos primeros. caracteres del nombre, si no, si lo encuentra, pruebe con más caracteres (por supuesto, los apellidos chinos generalmente solo tienen dos caracteres, nunca he visto un apellido con más de dos caracteres) o identifique manualmente el apellido y luego agregue el apellido. a la lista. El problema con esta idea es que puede haber problemas con apellidos compuestos, como "Si" y "Si Ma". El apellido reconocido por el guión será "Si". #!/usr/bin/env python
# -*- coding: utf-8 -*-
# La versión de Python debe ser 3.5 o superior
first_names = ('Li', 'Wang', 'Si', 'Sima')
def name_parser(nombre, first_name_count=1):
"""
Analiza el nombre y devuelve una tupla de apellido y nombre
: param str nombre: nombre
: param int first_name_count: longitud del apellido, el valor predeterminado es 1
:return: una tupla de apellido y nombre. Si el análisis no tiene éxito, se devolverá una tupla vacía
:rtype: tupla
. """
if nombre[ 0: first_name_count] in first_names:
return (nombre[0: first_name_count], nombre[first_name_count:])
else :
return () p>
if __name__ == '__main__':
# name.txt debe estar codificado en UTF-8 si está codificado. en otras codificaciones, optimícela usted mismo
con open(' name.txt', 'r', encoding='utf-8') como f:
para i en f :
name = i.rstrip('\n')
# Pruebe con un apellido de hasta dos caracteres
para n en el rango (1, 3 ):
s = name_parser(nombre, n)
if s:
print('{}'s apellido es: {}, nombre es: {}.'.format(nombre, s[0], s[1])) p>
break
else:
print('El El apellido y el nombre de {} no se analizaron y es posible que sea necesario complementar la lista de apellidos.'.format(name)) p>