Why does Python show the whole array?

Albert Hopkins marduk at letterboxes.org
Wed Apr 8 12:28:38 CEST 2009


On Wed, 2009-04-08 at 12:01 +0200, Peter Otten wrote:
> 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.

Or you could also use the .endswith() method

if test[test.find('@')+1:].endswith(item):





More information about the Python-list mailing list