Le meilleur moyen de supprimer les caractères en double (mots) dans une chaîne?
-
10-07-2019 - |
Question
Quel serait le meilleur moyen de supprimer les doublons de caractères et les jeux de caractères séparés par des espaces dans la chaîne?
Je pense que cet exemple l'explique mieux:
foo = 'h k k h2 h'
devrait devenir:
foo = 'h k h2' # order not important
Autre exemple:
foo = 's s k'
devient:
foo = 's k'
La solution
' '.join(set(foo.split()))
Notez que split () par défaut divisera tous les caractères d'espacement. (par exemple, onglets, nouvelles lignes, espaces)
Donc, si vous voulez diviser UNIQUEMENT sur un espace, vous devez utiliser:
' '.join(set(foo.split(' ')))
Autres conseils
Voulez-vous dire?
' '.join( set( someString.split() ) )
Ce sont les mots uniques délimités par un espace, sans ordre particulier.
out = []
for word in input.split():
if not word in out:
out.append(word)
output_string = " ".join(out)
Plus long que l'utilisation d'un ensemble, mais il conserve l'ordre.
Modifier: Tant pis. J'ai raté la partie de la question sur l'ordre n'est pas important. Utiliser un ensemble, c'est mieux.