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 Réponses :
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}
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.'}
Ceci est fondamentalement la même solution que l'une Anurag Uniyal fournie, seulement un peu plus compact:
Utilisation intéressante de la regex. Cela va probablement gérer et s'adaptera à plus de cas Weir Anurag. Merci pour la solution.
J'ai trouvé cette bibliothèque assez utile pour analyser les noms. https://code.google.com/p/python-nameparser/ p>
Il peut également traiter des noms formatés de nom, prénom. P>
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.