3

I wrote a script in python that parses some strings.

The problem is that I need to check if the string contains some parts. The way I found is not smart enough.

Here is my code:

if ("CondA" not in message) or ("CondB" not in message) or ("CondC" not in message) or ...:

Is there a way to optimize this? I have 6 other checks for this condition.

carols10cents
  • 6,943
  • 7
  • 39
  • 56
GiuseppeP
  • 81
  • 9

2 Answers2

2

You can use any function:

if any(c not in message for c in ("CondA", "CondB", "CondC")):
    ...
ndpu
  • 22,225
  • 6
  • 54
  • 69
2

Use a generator with any() or all():

if any(c not in message for c in ('CondA', 'CondB', ...)):
    ...

In Python 3, you could also make use of map() being lazy:

if not all(map(message.__contains__, ('CondA', 'CondB', ...))):
Blender
  • 289,723
  • 53
  • 439
  • 496