Y a-t-il un moyen de vérifier si une chaîne contient une autre chaîne mais pas nécessairement dans le bon ordre:
3 Réponses :
Modifiez la sous-chaîne en une expression régulière avec . * code> entre chaque caractère, puis utilisez re.search code>. import re
def fuzzy_substring(needle, haystack):
regex = ".*".join(re.escape(char) for char in needle)
return re.search(regex, haystack)
Vous pouvez utiliser des expressions régulières construites par programmation:
['hello my friend'] [] ['h.e.l. .m.y. .f.r.e.n.d']
Si je comprends bien votre question et les exemples correctement, vous pouvez utiliser Colections.Counter Code> Pour compter les caractères dans les deux chaînes et voir s'il reste des caractères restants après soustrayez la seconde du premier.
isin("hel my frgend", "hello my friend") # False
isin("hel my frend", "my frind hello") # False
isin("hel my frend", "h.e.l. .m.. .f.r.e.n.d") # False
Pourquoi le second est-il faux?
Si vous changez de sous-chaînes à Regex ou en boucle dessus
Vous pouvez diviser la première chaîne et vérifier chaque mot.
@Depperm La question dit: «Pas nécessairement dans le bon ordre».
Votre libellé indique que la commande devrait être sans importance?
petit. ce faux est maintenant vrai. Il y a tout mon travail. Et aussi ceux de certaines réponses jusqu'à présent.
désolé j'ai refixé la question qui a été une erreur
Fermer jusqu'à ce que l'Op comprenne ce qu'il veut.
La réponse est correctement posée maintenant je revue tout
2ème et 4ème exemples sont identiques.
Non, la commande n'est pas la même