Comment retourner les mots uniques à partir du fichier texte à l'aide de Python
Comment puis-je retourner tous les mots uniques à partir d'un fichier texte à l'aide de Python?
Par exemple:
Je ne suis pas un robot
Je suis un homme
Doit retourner:
Je
suis
pas
un
robot
de l'homme
Voici ce que j'ai fait jusqu'à présent:
def unique_file(input_filename, output_filename):
input_file = open(input_filename, 'r')
file_contents = input_file.read()
input_file.close()
word_list = file_contents.split()
file = open(output_filename, 'w')
for word in word_list:
if word not in word_list:
file.write(str(word) + "\n")
file.close()
Le fichier texte le Python crée n'a rien en elle. Je ne suis pas sûr de ce que je fais de mal
Vous devez vous connecter pour publier un commentaire.
chaque
word
est dansword_list
, par définition, à partir de la première ligne.Au lieu de cette logique, l'utilisation d'un
set
:set
s contenir uniquement des membres uniques, ce qui est exactement ce que vous essayez d'atteindre.Noter que l'ordre ne sont pas conservés, mais vous ne précisez pas si c'est une exigence.
Simplement parcourir les lignes dans le fichier et de les utiliser ensemble pour ne garder que le sont propres.
Voici la marche à suivre pour lire l'ensemble des lignes uniques à partir d'un fichier et de les imprimer
Ce code effectue une boucle sur chaque mot, et si elle n'est pas dans une liste
duplicates
, il ajoute le mot et l'écrit dans un fichier.file = open(output_filename, 'a')
? (C'était mon premier code (qui ne fonctionne pas))Ce qui semble être une application typique pour une collection:
Vous pouvez également utiliser une collection.Counter(), ce qui permettrait de compter les éléments que vous nourrissez dans. L'ordre des mots se perd si la. J'ai ajouté une ligne pour le comptage et le maintien de l'ordre.
En utilisant les Regex et Set:
Autre façon de faire est la création d'un Dict et en insérant les mots clés:
.split()
est différente de.split(' ')
.split()
et.split(' ')
set
" je ne sais pas pourquoi vous donner la peine.Le problème avec votre code est word_list a déjà tous les mots du fichier d'entrée. Lors de l'itération sur la boucle vous sont essentiellement de vérifier si un mot de word_list n'est pas présent en lui-même. De sorte qu'il sera toujours faux. Cela devrait fonctionner.. (à Noter que cette wll également de préserver l'ordre).
L'utilisation d'un ensemble. Vous n'avez pas besoin d'importer quoi que ce soit à faire.