Python comparer des chaînes ignorer les caractères spéciaux
Je veux comparer deux chaînes de caractères telles que la comparaison devrait ignorer les différences dans les caractères spéciaux. C'est,
Hai, ceci est un test
Doit correspondre avec
Hai ! ceci est un test "ou" Hai ceci est un test
Est-il possible de le faire sans modifier les chaînes d'origine?
Ce sont des "caractères spéciaux" dans ce contexte? Surtout, ce sont des espaces pris en compte? Parce qu'alors, ignorant le '!' laisse deux espaces, par opposition à celui de la première chaîne.
OriginalL'auteur Rohith | 2013-05-10
Vous devez vous connecter pour publier un commentaire.
Cela supprime la ponctuation et les espaces avant de faire la comparaison:
Utilisation
str.maketrans(dict.fromkeys(remove))
que la carte (premier argument).OriginalL'auteur root
Cela crée deux temporaires de listes, mais ne modifie pas les chaînes d'origine en quelque sorte.
c in string.letters
, vous pouvez utiliserc.isalpha()
.bon point, c'est plus court. J'ai édité ma réponse.
OriginalL'auteur Cairnarvon
De comparer un nombre arbitraire de chaînes pour les alphabétique équivalence,
Qui imprime
True
. Devrait changer<=
en fonction de ce que vous voulez sans arguments.OriginalL'auteur Jared
Généralement, vous souhaitez remplacer les caractères que vous voulez ignorer, puis de les comparer:
OriginalL'auteur Dan Lecocq
Peut-être que vous pouvez d'abord supprimer les caractères spéciaux dans vos deux cordes, puis de les comparer.
Dans votre exemple, les caractères spéciaux ',','!' et de l'espace.
donc pour vos chaînes:
alors vous pouvez simplement comparer les tempa et tempb.
OriginalL'auteur Flickerlight
Utiliser le Levenshtein métrique pour mesurer la distance entre deux chaînes de caractères. Le classement de vos comparaisons de chaînes par score. Choisir le haut n matchs.
OriginalL'auteur Alex Reynolds
Puisque vous mentionnez que vous ne voulez pas modifier les chaînes d'origine, vous pouvez également faire l'opération en place et sans besoin de l'espace supplémentaire.
OriginalL'auteur Wesley Baugh