help me~!!!'tuple' object has no attribute 'compile'

John Machin sjmachin at lexicon.net
Wed Nov 12 05:35:05 EST 2008


On Nov 12, 9:07 pm, ylj... at gmail.com wrote:
> my code
> -------------------------------------------------------------------------------------------
> # -*- coding: utf8 -*-
> #!/usr/bin/python
>
> import urllib
> import urllib2
> import re
> import MySQLdb
>
> conn=MySQLdb.connect
> (host="localhost",user="root",passwd="ylj",db="net", charset="utf8")
> cur = conn.cursor()
> sql='select
> net_site.downline_re,net_site.down_re,net_cha.id,net_cha.urlid,net_cha.source_url
> from net_site,net_cha where net_site.id=net_cha.urlid'
> cur.execute(sql)
> re=cur.fetchall()

You have bound the name "re" to the tuple returned by cur.fetchall()
This overrides the binding to the re module.
Use "result" or some other meaningful name instead.

> if len(re)!=0:
>      for i in re:
>          down_re="%s"%(i[1])
>          source_url="%s"%(i[4])
>          data= urllib2.urlopen(source_url).read()
>          res=re.compile(down, re_DOTALL).findall(data)

So re is a tuple, not the re module ... splat!

And another problem: down is not defined; do you mean down_re?

>          print str

Here are your next two problems:
(1) str is not defined
(2) str is a type; use some other meaningful name for whatever it is
that you are trying to print

HTH,
John



More information about the Python-list mailing list