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.
4 Réponses :
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(' ')
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}")
Merci pour la solution ... Parfait pour mon scénario ...
s'il vous plaît envisager de voter, si ma réponse est utile
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])
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.
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.
Merci pour la solution. A fonctionné comme un charme.
Les noms de variables avec des espaces ne sont pas possibles en python.