从长度< 3 的列表句子中删除单词



>我有一个输入文件,其中包含这样的句子:

I like apples
My mother is called Anna.

我将这些句子转移到一个列表中,然后我想删除长度<3 的单词。

我试过这个:

with open("fis.txt", "r", encoding="utf8") as f:
lst = [w.lower() for w in f.readlines() if len(w) >= 3]
print(lst)

但它给了我['i like apples', 'my mother is called anna.']

我想获得['like apples', 'mother called anna.']

这里似乎有什么问题?

f.readlines()为您提供了一个列表,其中包含两个对应于文件两行的项目。

您需要遍历这些行(无需先将它们读入内存,遍历f就可以了(,拆分每一行,然后过滤单词。

with open("fis.txt", "r", encoding="utf8") as f:
lst = [' '.join(w.lower() for w in line.split() if len(w) >= 3) for line in f]

尝试:

with open("fis.txt", "r", encoding="utf8") as f:
print( [" ".join(j for j in w.split() if len(j) >= 3 ) for w in f.readlines() ] )

输出:

['like apples', 'mother called Anna.']

它采用整个句子而不是单个单词,尝试遍历 w,然后检查长度。

最新更新