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

26
demandé sur Roee Adler 2009-05-17 10:33:54

6 réponses

La méthode strip () de strings supprime les espaces des deux extrémités.

set(line.strip() for line in open('filename.txt'))
43
répondu 2009-05-17 06:38:20

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())
12
répondu Anurag Uniyal 2012-05-18 14:25:28
my_set = set(map(str.strip, open('filename.txt')))
4
répondu RichieHindle 2009-05-17 06:36:03

Pour supprimer uniquement les espaces de droite.

set(map(str.rstrip, open('filename.txt')))
1
répondu Unknown 2009-05-17 06:40:33
with open("filename.txt") as f:
    s = set([line.rstrip('\n') for line in f])
1
répondu mtasic85 2009-05-17 11:27:16
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
0
répondu Matt G 2009-05-17 11:32:11