Comment trouver l'indice d'un mot dans une chaîne de caractères en Python
word = 'laugh'
string = 'This is laughing laugh'
index = string.find ( word )
indice est de 8, 17.
J'ai regardé autour de dur, mais ne pouvait pas trouver une réponse.
- Python, re est trop compliqué pour moi à résoudre ce encore!
- J'ai trouvé 194 questions sur ce site quand je fais une recherche pour "comment trouver un mot dans une chaîne de caractères". Êtes-vous en disant: aucun de ces réponses a aidé?
- 8 c'est la bonne réponse,
find
renvoie la position de départ de la première sous-chaîne correspondante
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser des regex (avec une limite de mot) comme
str.find
renvoie la première événement. Ensuite, utilisez lastart
attribut de lamatch
objet pour obtenir l'indice de départ.Vous pouvez trouver plus d'informations sur la façon dont il fonctionne ici.
.format
, c'est à direword = 'laugh' ; re.search(r'\b({})\b'.format(word), string)
essayez ceci:
Cela fait une liste contenant tous les mots et puis cherche le mot. Alors je suppose que vous pouvez ajouter à toutes les longueurs des éléments dans la liste inférieure à l'indice et de trouver votre indice de cette façon
Espère que cette aide.
Ici est une approche sans expressions régulières:
Cette coupe la corde en mots, trouve l'index de la reconnaissance des mots et puis résume les longueurs et les vide char comme un separater de tous les mots avant de.
Mise à jour une Autre approche est la suivante-doublure:
Ici les deux
string
et laword
sont à droite et à gauche rembourré avec des blancs pour saisir le mot complet dans n'importe quelle position de la chaîne.Vous devez bien sûr utiliser des expressions régulières pour la performance et le confort. L'équivalent de l'aide de la
re
module est comme suit:Ici
\b
signifie limite de mot, voir lare
de la documentation. Regex peut être assez intimidant. Un excellent moyen de tester et de trouver des expressions régulières est à l'aide de regex101.comsep
argument de lasplit(sep)
méthodeChaînes de caractères dans le code ne sont pas séparés par des espaces. Si vous souhaitez trouver de l'espace, vous devez inclure l'espace dans le mot que vous recherchez. Vous pouvez trouver qu'il serait vraiment plus efficace pour vous de diviser la chaîne en mots, puis itérer, e.g:
Que vous parcourez, vous pouvez ajouter de la longueur du mot en cours à un indice et quand vous trouver le mot, la rupture de la boucle. N'oubliez pas de compte pour les espaces!