7
votes

Comment puis-je analyser le premier et le nom de famille du peuple à Python?

Si fondamentalement, j'ai besoin d'analyser un nom et de trouver les informations suivantes:

  • Prénom P> LI>

  • première initiale (si l'employé a des initiales pour un prénom comme d.j., utilisez les deux initiales) p> li>

  • Nom de famille (inclure si l'employé a un suffixe tel que Jr. ou III.) P> LI> ul>


    Voici donc l'interface avec laquelle je travaille: p>

    entrée: strong> p>

    if name[1] == ".":  # we have a name like D.J.?
    


4 commentaires

I18N: envisagez-vous des systèmes, où le nom de famille vient en premier et le nom donné est deuxième?


Le problème sous-jacent (indépendamment du langage de mise en œuvre) n'est pas aussi évidemment satisfaisable que cela puisse paraître - voir cette duplicata: Stackoverflow.com/questions/103422/...


Nah, je ne crois pas que c'est dans le contexte de mes besoins. C'est un point intéressant cependant, pour un analyseur de nom plus complexe.


Le plus complexe Les noms seront montrés dans mon A.j. Hardie Jr. et D.J. Richies III Exemples.


4 Réponses :


3
votes

Eh bien, pour vos noms simples, vous pouvez faire quelque chose comme ça.

# This separates the first and last names
name = name.partition(" ")
firstName = name[0]
# now figure out the first initial
# we're assuming that if it has a dot it's an initialized name,
# but this may not hold in general
if "." in firstName:
    firstInitial = firstName
else:
    firstInitial = firstName[0] + "."
lastName = name[2]
return {"FirstName":firstName, "FirstInitial":firstInitial, "LastName": lastName}


0 commentaires

4
votes

Il n'y a pas de solution générale et solution dépendra des contraintes que vous avez placées. Pour que les spécifications que vous avez données est une solution simple qui donne exactement ce que vous voulez

{'LastName': 'Richies III', 'FirstInitial': 'D.J.', 'FirstName': 'D.J.'}
{'LastName': 'Doe', 'FirstInitial': 'J.', 'FirstName': 'John'}
{'LastName': 'Hardie Jr.', 'FirstInitial': 'A.J.', 'FirstName': 'A.J.'}


0 commentaires

3
votes

Ceci est fondamentalement la même solution que l'une Anurag Uniyal fournie, seulement un peu plus compact: xxx


1 commentaires

Utilisation intéressante de la regex. Cela va probablement gérer et s'adaptera à plus de cas Weir Anurag. Merci pour la solution.



7
votes

J'ai trouvé cette bibliothèque assez utile pour analyser les noms. https://code.google.com/p/python-nameparser/

Il peut également traiter des noms formatés de nom, prénom.


0 commentaires