1

我有以下代码,我扫描每一行并放入一个列表。如果该行与字符串“新更改”匹配,我不想放入列表中。关于如何实现这一目标的任何建议?

with open('file.txt', 'rb') as f:
    mainlist = [line.strip() for line in f]
4

5 回答 5

3

您可以在列表理解中进行过滤:

mainlist = [line.strip() for line in f if line.strip() !=  "New changes"]
于 2013-05-02T19:45:13.547 回答
2

列表推导也可以进行过滤:

mainlist = [line.strip() for line in f if "New changes" not in line]
于 2013-05-02T19:45:18.217 回答
0
with open('file.txt', 'rb') as f:
    mainlist = []
    for line in f:
        s = line.strip()
        if s != "New changes":
            mainlist.append(s)

如果有人有更 Pythonic 的方式来做到这一点,请随时告诉我。

于 2013-05-02T19:43:46.010 回答
0

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

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

或者

mainlist = [line.strip() for line in f if "New changes" not in line]
于 2013-05-02T19:45:32.087 回答
0

只是在这里有所不同的是 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(), [])
于 2013-05-02T21:52:40.130 回答