如何检查列表中的值是否存在文件每行中?

若是咱们要打印包含某关键字的行,在shell下咱们常常用的是grep,若是要过滤的字段较多,就会换成egrep,后面跟分字符来分割每一个关键字,基本是这样的:python

egrep "a|b|c" infile.txtshell

这样就能查到某文件那些行包含这个关键字,这么经常使用的功能咱们用python怎么实现呢?总不能每次都用在脚本中调用系统命令吧?莫着急,咱们今天就来看看如何用python来实现一个简单的egrep的功能,咱们先看判断用户输入的值是否存在文件的每行中,存在就打印,基本代码以下:app


with open('infile.txt', 'r') as fi:
ide

    for line in fi:函数

        if 'a' in line or 'b' in line or 'c' in line or 'd' in line:学习

           print line.strip()spa

就这么几行就搞定,再往下咱们就学习一个更简单地方法,咱们把用户的输入放入一个列表中,而后看看如何判断是否存在于文件每行中,代码以下:orm


find_str = ['a', 'b', 'c', 'd']ip

with open('infile.txt', 'r') as fi:ci

    for line in fi:

        if any(s in line for s in find_str):

           print line.strip()

这里我将用户输入直接放入了列表中,关于解释器如何语法分析将用户输入生成一个列表本篇就很少说了,重要的学习思路和方法,后续方便运用,这段代码咱们用到了any这个函数,这个函数跟上面的判断是同样的,只要有一个关键字存在,这行就会被打印出来,简单吧?