trouver la position d'une sous-chaîne dans une chaîne
je vais avoir un python de chaîne de format
mystr = "hi.this(is?my*string+"
ici, j'ai besoin d'obtenir le poste de " est "qui est entouré par des caractères spéciaux ou des caractères non-alphabétiques (seconde est" dans cet exemple). cependant, l'utilisation de
mystr.find('is')
sera de retour à la position de " est "qui est associé avec" ce " qui n'est pas souhaité. comment puis-je trouver la position d'une sous-chaîne qui est entouré par des caractères non-alphabétiques dans une chaîne de caractères? à l'aide de python 2.7
source d'informationauteur srek
Vous devez vous connecter pour publier un commentaire.
Ici, la meilleure option est d'utiliser une expression régulière. Python a le
re
module pour travailler avec des expressions régulières.Nous utilisons une simple recherche pour trouver la position de la
"is"
:Renvoie le premier match comme un match de l'objet. Nous avons alors simplement utiliser
MatchObject.start()
pour obtenir la position de départ:Edit: Un bon point faite, nous faisons
"is"
un groupe et le match de ce groupe afin de nous assurer d'obtenir la position correcte.Comme l'a souligné dans les commentaires, cela fait quelques présomptions. L'une est que entouré signifie que
"is"
ne peut pas être au début ou à la fin de la chaîne, si c'est le cas, une autre expression régulière est nécessaire, car cela ne correspond entouré de chaînes de caractères.Un autre, c'est que cette numération les nombres comme des caractères spéciaux - vous avez déclaré non-alphabétiquesqui, pour moi, signifie les chiffres. Si vous ne voulez pas de chiffres pour compter, puis à l'aide
r"\b(is)\b"
est la bonne solution.