阅读文件,跳过不需要的行并添加到列表中
问题描述:
我有以下代码,我扫描每行并放入列表中。如果该行匹配 一个字符串“新变化”,我不想列入清单。有关如何实现这一目标的任何建议?阅读文件,跳过不需要的行并添加到列表中
with open('file.txt', 'rb') as f:
mainlist = [line.strip() for line in f]
答
列表理解也可以做过滤:
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)
如果任何人有一个更Python的方式来做到这一点,随时让我知道。
答
,可以在列表中理解过滤:
mainlist = [line.strip() for line in f if line.strip() != "New changes"]
答
悟也可以接受的条件。尝试:
mainlist = [line.strip() for line in f if line != "New changes"]
或
mainlist = [line.strip() for line in f if "New changes" not in line]
+0
第一个现在在我的机器上工作。你缺少'.strip()'。 – gongzhitaao 2013-05-02 19:46:58
+0
这两个人不应该工作一样。 OP没有详细说明*行与字符串*匹配的含义(严格相等或存在模式),所以我给出了两种变体的代码 – Kos 2013-05-02 20:33:03
答
只是要在这里不同的是减少的学校和正则表达式的咒语:
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分几乎相同的答案: - )。 – Kos 2013-05-02 19:46:32