1
votes

Diviser un nom en prénom, deuxième prénom et nom de famille en utilisant Python

Donc, je demande essentiellement que j'ai un nom et je dois le diviser en trois parties et le stocker en trois variables différentes en utilisant Python.

Par exemple:

Nom = "John Wayne Smith"

Ensuite, la sortie souhaitée doit être:

Prénom = John

Deuxième prénom = Wayne

Nom de famille = Smith

De plus, je veux vérifier que si pour une personne le deuxième prénom n'est pas là, il devrait être vide.


1 commentaires

Les noms de variables avec des espaces ne sont pas possibles en python.


4 Réponses :


0
votes

Python a une fonctionnalité appelée "déballage" qui vous permet de déstructurer des objets à partir d'une liste. La liste en question provient de l'appel de la méthode split sur la chaîne. Il faut une chaîne pour se séparer. Pour décompresser, vous devez avoir une déclaration de la forme [a, b, c] = list où a, b et c sont des objets que vous souhaitez décompresser (dans l'ordre). Donc votre code est

[first, middle, last] = 'John Wayne Smith'.split(' ')


0 commentaires

1
votes

utiliser la fonction de fractionnement pour créer la liste qui contient les noms Le premier est le prénom, le deuxième est votre nom de famille si la longueur des noms est égale à 2

names =Name.split()
if len(names) ==2 :
 print("there is no middle name")
 first_name = names[0]
 last_name = names[1]
 print(f" first name - {first_name}\n  middle name -  last name - {last_name}")
elif len(names) == 3:
 print("there is  middle name")
 first_name = names[0]
 middle_name = names[1]
 last_name = names[2]
 print(f" first name - {first_name}\n middle name - {middle_name} \nlast name - {last_name}")


2 commentaires

Merci pour la solution ... Parfait pour mon scénario ...


s'il vous plaît envisager de voter, si ma réponse est utile



0
votes

Vous pouvez utiliser str.split et len check sur le résultat:

name = "John Wayne Smith"
parts = name.split(maxsplit=3)
if len(parts) == 3:
    first, middle, last = parts
else:
    first = parts[0]
    middle = ""
    last = parts[-1]
print([first, middle, last])


1 commentaires

Ajoutez du contexte pour augmenter la qualité de la réponse. Cela évite de marquer par des bots ou de déclencher un comportement de vote négatif des utilisateurs. EoR.



1
votes

Nous pouvons utiliser l'expression régulière suivante:

p.match(s).groupdict()
# {'First': 'John', 'Middle': 'Wayne', 'Last': 'Smith'}

p.match(s2).groupdict()
# {'First': 'John', 'Middle': None, 'Last': 'Smith'}

Qui recherche un prénom et un nom, et éventuellement un deuxième prénom.


Exemple

import re

s = "John Wayne Smith"
s2 = "John Smith"

p = re.compile(r"(?P<First>\S+)\s(?:(?P<Middle>\S*)\s)?(?P<Last>\S+)$")
(?P<First>\S+)\s(?:(?P<Middle>\S*)\s)?(?P<Last>\S+)$

Veuillez noter que la match correspondra à la chaîne entière du début à la fin. Assurez-vous de nettoyer et de valider vos entrées au préalable, car les expressions régulières sont quelque peu fragiles aux entrées auxquelles elles ne s'attendent pas.


1 commentaires

Merci pour la solution. A fonctionné comme un charme.