Why does Python show the whole array?

Peter Otten __peter__ at web.de
Wed Apr 8 12:01:35 CEST 2009


Gilles Ganault wrote:

> I'd like to go through a list of e-mail addresses, and extract those
> that belong to well-known ISP's. For some reason I can't figure out,
> Python shows the whole list instead of just e-mails that match:
> 
> ======= script
> test = "toto at gmail.com"
> isp = ["gmail.com", "yahoo.com"]
> for item in isp:
>         if test.find(item):
>                 print item
> ======= output
> gmail.com
> yahoo.com
> ======= 
> 
> Any idea why I'm also getting "yahoo.com"?

Because str.find() returns the position of the search string if found and -1
if it is not found:

>>> "abc".find("bc")
1
>>> "abc".find("ab")
0
>>> "abc".find("x")
-1

Use

if test.find(item) != -1: ...

or

if item in test: ...

to make your example work.

Peter



More information about the Python-list mailing list