我如何编写 python 一行来创建文件中所有单词的列表?

how do I write a python one-liner to create a list of all words in a file?

给定一个 ascii 文件,我想要一个 python 单行代码来创建文件中的单词列表。

让 tfile 包含以下 2 行

abc xyz abc mno
tuv xyz qrs abc

文件中有 8 个单词和 5 个唯一单词。

如果我分配

file='tfile'

以下一行代码将创建一个包含 tfile 中 5 个唯一单词的集合

s=set(open(file).read().split())

其中输出为 {'abc'、'mno'、'qrs'、'tuv'、'xyz'}

但是,如果我尝试类似的方法来获取文件中所有单词的列表,即

l=list(open(file).read().split(" "))

我得到以下内容

['abc', 'xyz', 'abc', 'mno\ntuv', 'xyz', 'qrs', 'abc\n']

这不太行得通,因为每行的最后一个单词都附加了一个换行符。

如果我将 strip() 添加到语句中,如

l=list(open(file).read().strip().split(" "))

我得到以下内容,更好,但仍然包含一个换行符,该换行符附加到文件中下一行的第一个单词。

['abc', 'xyz', 'abc', 'mno', '\ntuv', 'xyz', 'qrs', 'abc']

所以 2 个问题: (1) 是否有一条线可以满足我的需求?和 (2) 为什么独特的单词集工作得很好,没有任何换行符?

您在第二个示例中添加了 " " 作为拆分的参数。一开始,你有

s=set(open(file).read().split())

但是,你做到了

l=list(open(file).read().split(" "))

关键是split(" ")。没有它 Python 只会分割任何被认为是空白的东西,但有了它它就被限制为空格。

所以你只需要

l=list(open(file).read().split())

如果你想要一个独特的单词列表,你可以先创建一个集合,然后再转换成一个列表。

l=list(set(open(file).read().split()))