or
does not behave that way. 'string1' or 'string2' or 'string3' in line
is equivalent to ('string1') or ('string2') or ('string3' in line)
, which will always return true (actually, 'string1'
).
To get the behavior you want, you can say if any(s in line for s in ('string1', 'string2', 'string3')):
.