"str.contains(part)" or alternatives?

Stefan Schwarzer sschwarzer at sschwarzer.net
Wed Sep 11 22:23:02 CEST 2002

Hello all

I would like to get your thoughts on testing if a string contains another.

To do something dependent on whether a part is contained in another string, the
following code is familiar to me:

 >>> s = 'Hello'
 >>> if s.find('ll') != -1:
...     do_something_if_found()
... else:
...     do_something_if_not_found()

However, I dislike the test for the special value -1; that reminds me of error
code checking. On the other hand, using exceptions could look like

 >>> try:
...     s.index('ll')
...     do_something_if_found()
... except ValueError:
...     do_something_if_not_found()

This has the problem that a ValueError raised in do_something_if_found() may give
the false impression that the substring isn't contained in the string s. Moreover,
that code doesn't represent my thoughts very well. (Maybe I could say that better
if I were a native English speaker :) ).

I would like something analogous to .startswith and .endswith:

 >>> s = 'Hello'
 >>> if s.contains('ll'):
...     do_something_if_found()
... else:
...     do_something_if_not_found()

Do you have other suggestions how to do the test easily without using special
values? Should a .contains method be part of string objects in future Python
versions? What do you think?


More information about the Python-list mailing list