1

我的问题与类似,只是我想搜索多个 的出现chars,例如g, dand e,然后打印所有指定字符存在的行。

我尝试了以下方法,但没有奏效:

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

我得到的行中有“g”或“d”或两者都有,我想要的只是两个出现,而不是至少一个,就像运行上述代码的结果一样。

4

3 回答 3

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

c in line这样做的好处是每次检查都遍历整条线时不会经过两次

于 2013-03-23T23:17:01.847 回答
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'):

(您也可以使用集合交集,但这不太通用。)

于 2013-03-23T22:25:44.420 回答
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. 不考虑搜索词的频率。

希望能帮助到你。

于 2013-03-23T22:16:00.427 回答