32

我有一个包含数千个单词的简单文本文件,每个单词都在自己的行中,例如

aardvark
hello
piper

我使用以下代码将单词加载到集合中(我需要单词列表来测试成员资格,因此 set 是我选择的数据结构):

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

上面的代码生成了一个包含以下条目的集合(每个单词后跟一个空格和换行符:

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

将文件加载到集合中但摆脱空间和 \n 的最简单方法是什么?

谢谢

4

6 回答 6

66

字符串的 strip() 方法从两端删除空格。

set(line.strip() for line in open('filename.txt'))
于 2009-05-17T06:38:20.747 回答
15

只需加载所有文件数据并将其拆分,它将处理每行一个单词或每行多个单词,用空格分隔,而且一次加载整个文件会更快,除非您的文件以 GB 为单位

words =  set(open('filename.txt').read().split())
于 2009-05-17T06:41:17.603 回答
4
my_set = set(map(str.strip, open('filename.txt')))
于 2009-05-17T06:36:03.043 回答
2

仅删除右侧空格。

set(map(str.rstrip, open('filename.txt')))
于 2009-05-17T06:40:33.580 回答
1
with open("filename.txt") as f:
    mySet = map(str.rstrip, f)

如果你想在 Python 2.5 中使用它,你需要

from __future__ import with_statement
于 2009-05-17T09:02:27.263 回答
1
with open("filename.txt") as f:
    s = set([line.rstrip('\n') for line in f])
于 2009-05-17T11:27:16.743 回答