Python: загрузка слов из файла в набор - PullRequest
28 голосов
/ 17 мая 2009

У меня есть простой текстовый файл с несколькими тысячами слов, каждое в отдельной строке, например,

aardvark
hello
piper

Я использую следующий код для загрузки слов в набор (мне нужен список слов, чтобы проверить членство, поэтому set - это структура данных, которую я выбрал):

my_set = set(open('filename.txt'))

Приведенный выше код создает набор со следующими записями (за каждым словом следует пробел и символ новой строки:

("aardvark \n", "hello \n", "piper \n")

Какой самый простой способ загрузить файл в набор, но избавиться от места и \ n?

Спасибо

Ответы [ 6 ]

48 голосов
/ 17 мая 2009

Метод строк () для строк удаляет пробелы с обоих концов.

set(line.strip() for line in open('filename.txt'))
12 голосов
/ 17 мая 2009

Просто загрузите все данные файла и разбейте их, он позаботится об одном слове в строке или нескольких словах в строке, разделенных пробелами, а также будет быстрее загружать весь файл сразу, если ваш файл не находится в ГБ

words =  set(open('filename.txt').read().split())
4 голосов
/ 17 мая 2009
my_set = set(map(str.strip, open('filename.txt')))
1 голос
/ 17 мая 2009
with open("filename.txt") as f:
    s = set([line.rstrip('\n') for line in f])
1 голос
/ 17 мая 2009
with open("filename.txt") as f:
    mySet = map(str.rstrip, f)

Если вы хотите использовать это в Python 2.5, вам нужно

from __future__ import with_statement
1 голос
/ 17 мая 2009

Удалить только правые пробелы.

set(map(str.rstrip, open('filename.txt')))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...