Python: load words from file into a set

2019-02-11 10:55发布

I have a simple text file with several thousands of words, each in its own line, e.g.

aardvark
hello
piper

I use the following code to load the words into a set (I need the list of words to test membership, so set is the data structure I chose):

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

The above code produces a set with the following entries (each word is followed by a space and new-line character:

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

What's the simplest way to load the file into a set but get rid of the space and \n?

Thanks

6条回答
一夜七次
2楼-- · 2019-02-11 11:46
with open("filename.txt") as f:
    mySet = map(str.rstrip, f)

If you want to use this in Python 2.5, you need

from __future__ import with_statement
查看更多
甜甜的少女心
3楼-- · 2019-02-11 11:47

The strip() method of strings removes whitespace from both ends.

set(line.strip() for line in open('filename.txt'))
查看更多
贪生不怕死
4楼-- · 2019-02-11 11:47

Just load all file data and split it, it will take care of one word per line or multiple words per line separated by spaces, also it will be faster to load whole file at once unless your file is in GBs

words =  set(open('filename.txt').read().split())
查看更多
The star\"
5楼-- · 2019-02-11 11:47

To remove only the right hand spaces.

set(map(str.rstrip, open('filename.txt')))
查看更多
虎瘦雄心在
6楼-- · 2019-02-11 11:48
my_set = set(map(str.strip, open('filename.txt')))
查看更多
甜甜的少女心
7楼-- · 2019-02-11 11:57
with open("filename.txt") as f:
    s = set([line.rstrip('\n') for line in f])
查看更多
登录 后发表回答