Python 读取文件,跳过不需要的行&;添加到列表中

Python 读取文件,跳过不需要的行&;添加到列表中,python,Python,我有下面的代码,我扫描每一行并将其放入一个列表中。如果行匹配 一个字符串“newchanges”,我不想放在列表中。有没有关于如何实现这一目标的建议 with open('file.txt', 'rb') as f: mainlist = [line.strip() for line in f] 如果有人有一个更像蟒蛇的方法来做这件事,请随时告诉我 如果有人有更具Python风格的方法,请随时告诉我。您可以在列表中进行筛选: mainlist = [line.strip() for l

我有下面的代码,我扫描每一行并将其放入一个列表中。如果行匹配 一个字符串“newchanges”,我不想放在列表中。有没有关于如何实现这一目标的建议

with open('file.txt', 'rb') as f:
    mainlist = [line.strip() for line in f]
如果有人有一个更像蟒蛇的方法来做这件事,请随时告诉我


如果有人有更具Python风格的方法,请随时告诉我。

您可以在列表中进行筛选:

mainlist = [line.strip() for line in f if line.strip() !=  "New changes"]

您可以在列表中进行筛选:

mainlist = [line.strip() for line in f if line.strip() !=  "New changes"]

列表理解也可以进行过滤:

mainlist = [line.strip() for line in f if "New changes" not in line]

列表理解也可以进行过滤:

mainlist = [line.strip() for line in f if "New changes" not in line]

理解也可以接受一个条件。尝试:

mainlist = [line.strip() for line in f if line != "New changes"]


理解也可以接受一个条件。尝试:

mainlist = [line.strip() for line in f if line != "New changes"]


与此不同的是,这里有一句来自reduce和regex学派的咒语:

import re
with open('file.txt', 'rb') as f:
  mainlist = reduce(lambda x, y: x+re.findall("^((?!.*New changes).*)\n?$", y), f.readlines(), [])

与此不同的是,这里有一句来自reduce和regex学派的咒语:

import re
with open('file.txt', 'rb') as f:
  mainlist = reduce(lambda x, y: x+re.findall("^((?!.*New changes).*)\n?$", y), f.readlines(), [])

哈哈,在20秒的传播中有3个几乎相同的答案:-)。哈哈,在20秒的传播中有3个几乎相同的答案:-)。第一个现在正在我的机器上工作。您缺少一个
.strip()
。这两个不应该工作相同。OP没有详细说明哪一行匹配字符串意味着什么(严格相等或模式的存在),所以我给出了两个变量的代码第一个变量现在正在我的机器上工作。您缺少一个
.strip()
。这两个不应该工作相同。OP并没有详细说明哪一行匹配字符串的意思(严格相等或模式的存在),所以我给出了这两个变体的代码