我有以下代碼,我掃描每行並放入列表中。如果該行匹配 一個字符串「新變化」,我不想列入清單。有關如何實現這一目標的任何建議?閱讀文件,跳過不需要的行並添加到列表中
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 "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]
第一個現在在我的機器上工作。你缺少'.strip()'。 – gongzhitaao 2013-05-02 19:46:58
這兩個人不應該工作一樣。 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