建立匹配行列表 - 几种风格:
def lines_that_equal(line_to_match, fp):
return [line for line in fp if line == line_to_match]
def lines_that_contain(string, fp):
return [line for line in fp if string in line]
def lines_that_start_with(string, fp):
return [line for line in fp if line.startswith(string)]
def lines_that_end_with(string, fp):
return [line for line in fp if line.endswith(string)]
构建匹配行的生成器(内存高效):
def generate_lines_that_equal(string, fp):
for line in fp:
if line == string:
yield line
打印所有匹配的行(首先找到所有匹配,然后打印它们):
with open("file.txt", "r") as fp:
for line in lines_that_equal("my_string", fp):
print line
打印所有匹配的行(懒惰地打印它们,因为我们找到它们)
with open("file.txt", "r") as fp:
for line in generate_lines_that_equal("my_string", fp):
print line
生成器(由 yield生成)是您的朋友,尤其是对于不适合内存的大文件。