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

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

egrep "a|b|c" infile.txt

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


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

    for line in fi:

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

           print line.strip()

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


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

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

    for line in fi:

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

           print line.strip()

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


猜你喜欢

转载自blog.51cto.com/15060540/2651710