[Newbie Q on String & List Manipulation]

Larry Bates lbates at swamisoft.com
Thu Apr 15 09:55:36 EDT 2004


If you want to join all the items in a list together
try:

mycookies="".join(thecookies)

Secondly, your append to the cookies list is not
inside your loop.  In your code it will only
get executed a single time (after exiting the
loop) which is most likely why you only see the
LAST item.  Remember that indention in Python
has meaning!

Something more like this:

for item in thecookies:
    if re.compile("^SID").search(item):
        foundsessionid = 1
        break

    if not foundsessionid:
        print '> Failed to retrieve the "SID" cookie'
        sys.exit()

    #
    # grep the GV cookie from the HTTP response or die
    #
    matches = re.compile('^\s*var cookieVal= "(.*)";.*',
re.M).search(response)
    if matches:
        thecookies.append("GV=" + matches.group(1))
    else:
        print '> Failed to retrieve the "GV" cookie'
        sys.exit()

    print thecookies

mycookies = "".join(thecookies)

Regards,
Larry Bates
Syscon, Inc.

"Matthew" <matthew at coredumps.net> wrote in message
news:567a7c35.0404150247.7809bef5 at posting.google.com...
> Hello All,
>
>     today is the first day i try to programming in Python,
>     my assignment is, write a silly script that probably
>     will run a few times a day to check if the Gmail services
>     is ready or not. ;)
>
>     however, i encountered some problem when playing with the
>     list and string.
>
>     i'm using Python 2.2.2 on Redhat. if i write something like:
>
>         a = "one"
>         b = "two"
>         a += b
>         print a
>
>     i will get:
>
>         onetwo
>
>     ok, seems quite ok, however, not sure why it doesn't work on
>     my silly Gmail script (pls refer to my script belows):
>
>         for item in thecookies:
>             mycookies += item
>
>         print mycookies
>
>     i have exactly 4 items in the "thecookies" list, however, when
>     printing out "mycookies", it just show the last item (in fact,
>     seems the 4 items have been overlapped each others).
>
>     could somebody pls kindly take a look at my silly script and
>     gimme some advise?
>
>     thanks very much in advance! :)
>
> ---
> matthew
>
>
>
>
> import re
> import string
> import sys
> import urllib
>
> user = "da at email.address"
> pswd = "dapassword"
>
> schm = "https://"
> host = "www.google.com"
> path = "/accounts/ServiceLoginBoxAuth"
> qstr = {"service"  : "mail",                     \
>         "continue" : "http://gmail.google.com/", \
>         "Email"    : user,                       \
>         "Passwd"   : pswd}
>
> qstr = urllib.urlencode(qstr)
>
> url  = schm + host + path + "?" + qstr
>
> conn = urllib.urlopen(url)
>
> headers  = conn.info().headers
> response = conn.read()
>
> thecookies = []
>
> #
> # extract all the Set-Cookie from the HTTP response header and put it in
thecookies
> #
>
> for header in headers:
>         matches = re.compile("^Set-Cookie: (.*)$").search(header)
>         if matches:
>                 thecookies.append(matches.group(1))
>
> #
> # make sure we've grep the SID or die
> #
>
> foundsessionid = 0
>
> for item in thecookies:
>         if re.compile("^SID").search(item):
>                 foundsessionid = 1
>                 break
>
> if not foundsessionid:
>         print "> Failded to retrieve the \"SID\" cookie"
>         sys.exit()
>
> #
> # grep the GV cookie from the HTTP response or die
> #
>
> matches = re.compile("^\s*var cookieVal= \"(.*)\";.*",
re.M).search(response)
>
> if matches:
>         thecookies.append("GV=" + matches.group(1))
> else:
>         print "> Failed to retrieve the \"GV\" cookie"
>         sys.exit()
>
> print thecookies
>
> mycookies = ""
>
> for item in thecookies:
>         mycookies += item
>
> print mycookies
>
> #
> # still got many things to do right here...
> #
>
> sys.exit()





More information about the Python-list mailing list