web-dev-qa-db-fra.com

Python: chargez des 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'adhésion, c'est donc 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 caractère et d'un 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 vous débarrasser de l'espace et\N?

Merci

28
Roee Adler

Il suffit de charger toutes les données de fichier et de la diviser, elle s'occupera d'un mot par ligne ou de mots multiples par ligne séparés par des espaces, il sera également plus rapide de charger un fichier entier à la fois, à moins que votre fichier soit en GBS.

words =  set(open('filename.txt').read().split())
12
Anurag Uniyal

Pour enlever uniquement les espaces de droite.

set(map(str.rstrip, open('filename.txt')))
1
Unknown
with open("filename.txt") as f:
    s = set([line.rstrip('\n') for line in f])
1
mtasic85
with open("filename.txt") as f:
    mySet = map(str.rstrip, f)

Si vous souhaitez utiliser cela dans Python 2.5, vous avez besoin

from __future__ import with_statement
1
Matt G