Dans ce cas, la longueur de sortie sera la même que la longueur d'entrée, car vous recherchez une sous-chaîne spécifique. Lorsque vous recherchez dans 'lost'
, la longueur du match sera 2
, parce que c'est la longueur du paramètre de recherche. Maintenant, si vous voulez faire la différence entre "trouvé" et "non trouvé", rappelez-vous que re.search
renvoie None
s'il n'y a pas de correspondance. Si vous avez vraiment besoin de la longueur, vous pouvez le faire:
for i in range(len(list)):
length = 2 if re.search('os', list[i]) else 0
Je vous recommande d'utiliser une boucle foreach plus typique que:
for item in list:
length = 2 if re.search('os', item) else 0
Et si tout vous vérifiez est si une chaîne apparaît dans un autre, eh bien, vous pouvez utiliser l'opérateur in
pour que:
for item in list:
length = 2 if 'os' in item else 0
maintenant, si vous êtes à la recherche d'un regex plus complexe, vous pouvez récupérer groupe 0
fr om la correspondance, qui est la totalité de la sous-chaîne, et en vérifier la longueur:
for item in list:
match = re.search('[aeiou]s', item)
length = len(match.group(0)) if match else 0
Do *** not *** utilise des regexps pour des comparaisons de chaînes simples. De plus, la meilleure façon d'itérer sur une liste est 'pour item in list'. Veuillez lire le [Tutoriel Python] (http://docs.python.org/tutorial/). – ThiefMaster
Longueur de quoi exactement? –
@ThiefMaster: Je sais que RE est trop pour un simple substing, mais re.search est plus rapide que string.find par exemple parce qu'il s'arrête à la première occurrence. Si vous avez beaucoup de ficelles, je préfère utiliser une méthode "anormale", mais obtenir moins de temps. – stdio