Python: charger les mots du fichier dans un ensemble
J'ai un fichier texte simple avec plusieurs milliers de mots, chacun dans sa propre ligne, par exemple
aardvark
hello
piper
J'utilise le code suivant pour charger les mots dans un ensemble (j'ai besoin de la liste des mots pour tester l'appartenance, donc set est la structure de données que j'ai choisie):
my_set = set(open('filename.txt'))
Le code ci-dessus produit un ensemble avec les entrées suivantes (chaque mot est suivi d'un espace et le caractère de nouvelle ligne:
("aardvark n", "hello n", "piper n")
Quel est le moyen le plus simple de charger le fichier dans un ensemble mais de se débarrasser de l'espace et n?
Merci
6 réponses
Il suffit de charger toutes les données du fichier et de les diviser, il s'occupera d'un mot par ligne ou de plusieurs mots par ligne séparés par des espaces, il sera également plus rapide de charger le fichier entier à la fois sauf si votre fichier est en GBs
words = set(open('filename.txt').read().split())
Pour supprimer uniquement les espaces de droite.
set(map(str.rstrip, open('filename.txt')))
with open("filename.txt") as f:
s = set([line.rstrip('\n') for line in f])
with open("filename.txt") as f:
mySet = map(str.rstrip, f)
Si vous voulez l'utiliser dans Python 2.5, vous avez besoin d'
from __future__ import with_statement