我如何编写 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()))
给定一个 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()))