Python console rejects an object reference, having made an object with that reference as its name in previous line

Ned Batchelder ned at nedbatchelder.com
Sun Dec 14 11:36:47 EST 2014


On 12/14/14 11:15 AM, Simon Evans wrote:
> Dear Python programmers,
> Having input the line of code in text:
> cd Soup
> to the Windows console, and having put the file 'EcologicalPyramid.html' into the Directory 'Soup', on the C drive, in accordance with instructions I input the following code to the Python console, as given on page 30 of 'Getting Started with Beautiful Soup':
> ----------------------------------------------------------------------------
> Python 2.7.6 (default, Nov 10 2013, 19:24:18) [MSC v.1500 32 bit (Intel)] on win
> 32
> Type "help", "copyright", "credits" or "license" for more information.
>>>> from bs4 import BeautifulSoup
>>>> with open("ecologicalpyramid.html","r") as ecological_pyramid:
> ...      soup = BeautifulSoup(ecological_pyramid,"lxml")
> ... producer_entries = soup.find("ul")
>
>             ^
> SyntaxError: invalid syntax

This SyntaxError is indicating that none of the code you have just typed 
was run.  The reason it's a syntax error is because the interactive 
prompt is a bit simplistic about how to handle multiple statements.  It 
wants a blank line after the with-clause.

Because none of these lines were run, you never opened your HTML file, 
never parsed it, and never assigned to the name "soup".

>>>> producer_entries = soup.find("ul")
> Traceback (most recent call last):
>    File "<stdin>", line 1, in <module>
> NameError: name 'soup' is not defined
>>>>
>             ^
> ----------------------------------------------------------------------------
> so I cannot proceed with the next line withh would 've been :
> ----------------------------------------------------------------------------
> print(producer_entries.li.div.string)
> ----------------------------------------------------------------------------
> which would've given (according to the book) the output:
> ---------------------------------------------------------------------------
> plants
>
> Maybe that is getting a bit far ahead, but I can't quite see where I have gone wrong - 'soup' has been defined as an object made of file 'EcologicalPyramid.html
>
> I hope you can help me on this point.

For complex code experiments, it's better to put the code in a file, and 
run the file.  But if you do want to use the interactive interpreter, 
enter code carefully, and watch out for the error messages.

-- 
Ned Batchelder, http://nedbatchelder.com




More information about the Python-list mailing list