On Sat, 2006-09-16 at 09:44 -0500, Brian Edward wrote:
> Hello all,
> 
> I am new to Python (and programming in general) and am trying to get
> PyGoogle figured out for some specific research interests.  Basically,
> I have done a simple search using PyGoogle and have some sitting in
> memory.  I have an object data.results, which is apparently a list:
> 
> >>> type(data.results)
> <type 'list'>
> 
> In this list, I have ten URL saved, which I can access by using the
> brackets and noting the specific elements.  For example: 
> 
> >>> data.results[0].URL
> 'http://www.psychguides.com/gl-treatment_of_schizophrenia_1999.html'
> 
> >>> data.results [1].URL
> 'http://www.psychguides.com/sche.pdf'
> 
> My question is, how can I access all ten URLs in a single command.
> Specifically, why does the following statement not work: 
> 
> >>> data.results[0:10].URL
You need to extract the URL from each item in the result list.
Something like:

        urls = [r.URL for r in data.results]

will extract a list of urls from your list of results.
> 
> Traceback (most recent call last):
>   File "<pyshell#78>", line 1, in -toplevel-
>     data.results[0:10].URL
> AttributeError: 'list' object has no attribute 'URL' 
> 
> 
> Again, I am new to Python, so a watered-down, conceptual response to
> this would be greatly appreciated.  Thanks in advance.

data.results[0:10] simply copies the first 10 results from your original
list into a new list.  The new list does not have a URL attribute, as
the error message tells us.  The URL attribute belongs to the individual
items in the list.

You need to process each result in data.results to extract the URL.
Your choices boil down to:
        for statement
or the more functionally oriented
        map
        list comprehension
        generator expression (python 2.4 or later)

For creating a new list from an existing list, a list comprehension is
usually the best bet.  The for statement approach would look something
like:
        urls = []
        for r in data.results:
                urls.append(r.URL)

list comprehensions provide a simpler, more direct syntax.



> 
> Brian
> 
> 
> 
> 
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> http://mail.python.org/mailman/listinfo/tutor
-- 
Lloyd Kvam
Venix Corp

_______________________________________________
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor

Reply via email to