使用python搜索文本文件以查找特定字符的出现

时间:2013-03-23 21:58:24

标签: python regex file search

我的问题类似于this one,但我想搜索多个chars的出现,例如gde ,然后打印存在所有指定字符的行。

我尝试过以下但是没有用:

searchfile = open("myFile.txt", "r")
for line in searchfile:
    if ('g' and 'd') in line: print line,
searchfile.close()

我得到的行中有'e'或'd'或两者都有,我想要的只是两个出现,而不是至少其中一个,这是运行上面代码的结果。

3 个答案:

答案 0 :(得分:4)

if set('gd').issubset(line)

这样做的好处是,c in line每次检查遍历整行,不会经历两次

答案 1 :(得分:2)

这一行:

if ('g' and 'd') in line: 

相同
if 'd' in line:

,因为

>>> 'g' and 'd'
'd'

你想要

if 'g' in line and 'd' in line:

或者,更好:

if all(char in line for char in 'gde'):

(你也可以使用set intersection,但这不太通用。)

答案 2 :(得分:0)

正确的表达式肯定会帮助你进行模式匹配,但似乎你的搜索比这更容易。请尝试以下方法:

# in_data, an array of all lines to be queried (i.e. reading a file)
in_data = [line1, line2, line3, line4]

# search each line, and return the lines which contain all your search terms
for line in in_data:
    if ('g' in line) and ('d' in line) and ('e' in line):
        print(line)

这个简单的东西应该有效。我在这里做了一些假设:     1.搜索词的顺序无关紧要     2.不处理大/小写     3.不考虑搜索词的频率。

希望它有所帮助。