Python:从文本fi中删除行的最有效方法

2024-05-14 05:50:15 发布

您现在位置:Python中文网/ 问答频道 /正文

如何进行for循环并更改列表中的条目?类似于[line.strip() for line in lines]的等价物,只是line.strip()被保存回行列表。

这是必需的,因为我使用的是存储在列表中的大型数据集。该数据集将用于机器训练以训练分类器。特别是使用NLTK库的自然语言处理。因此,复制数组是不可行的。


Tags: 数据in机器列表for分类器line条目
3条回答

是否要将结果存储到同一实例lines(不替换为新的列表实例)?

lines[:] = [line.strip() for line in lines]

如果我理解正确的话,您将尝试从文件中删除行,而不是创建一个全新的列表。问题是,在Pythonstrings are immutable中,不能就地修改字符串,必须创建一个新字符串。

正如其他人所建议的,生成器表达式将按需生成剥离的字符串,而不是将它们全部存储在新列表中,从而减少内存需求。如果您真的想将字符串剥离到适当的位置,那么这样的操作将完成:

for i, line in enumerate(lines): lines[i] = line.strip()

但无论如何,创建一个新列表可能会更快。

使用生成器表达式,则不会同时保留所有行。

glines = (line.strip() for line in lines)

相关问题 更多 >