我有以下代码,我扫描每一行并放入一个列表。如果该行与字符串“新更改”匹配,我不想放入列表中。关于如何实现这一目标的任何建议?
with open('file.txt', 'rb') as f:
mainlist = [line.strip() for line in f]
我有以下代码,我扫描每一行并放入一个列表。如果该行与字符串“新更改”匹配,我不想放入列表中。关于如何实现这一目标的任何建议?
with open('file.txt', 'rb') as f:
mainlist = [line.strip() for line in f]
您可以在列表理解中进行过滤:
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]
with open('file.txt', 'rb') as f:
mainlist = []
for line in f:
s = line.strip()
if s != "New changes":
mainlist.append(s)
如果有人有更 Pythonic 的方式来做到这一点,请随时告诉我。
理解也可以接受一个条件。尝试:
mainlist = [line.strip() for line in f if line != "New changes"]
或者
mainlist = [line.strip() for line in f if "New changes" not in line]
只是在这里有所不同的是 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(), [])