我的问题类似于this one,但我想搜索多个chars
的出现,例如g
,d
和e
,然后打印存在所有指定字符的行。
我尝试过以下但是没有用:
searchfile = open("myFile.txt", "r")
for line in searchfile:
if ('g' and 'd') in line: print line,
searchfile.close()
我得到的行中有'e'或'd'或两者都有,我想要的只是两个出现,而不是至少其中一个,这是运行上面代码的结果。
答案 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.不考虑搜索词的频率。
希望它有所帮助。