在Python中有效地提取包含字符串的行

时间:2014-09-30 04:12:59

标签: python-2.7

有时我只需要从文本文件中获取包含某个字符串的行(例如,在解析日志文件时)。我通常这样做:

with open(TEXTFILENAME,'r') as f:
  contents = f.readlines()

targets = [s for s in contents if FINDSTRING in s]

然而,我看到那里有一个可能的双线:

with open(TEXTFILENAME,'r') as f:
  targets = [s for s in f.readlines() if FINDSTRING in s]

我想知道第二种方法是否更有效,在这种情况下readlines()函数是否作为排序的迭代器。

1 个答案:

答案 0 :(得分:2)

避免调用readlines,这会生成所有行的列表。因此,这应该更快

with open(TEXTFILENAME,'r') as f:
    targets = [line for line in f if FINDSTRING in line]