Python unexpected EOF while parsing

Python unexpected EOF while parsing

Use raw_input instead of input 🙂

If you use input, then the data you
type is is interpreted as a Python
which means that you
end up with gawd knows what type of
object in your target variable, and a
heck of a wide range of exceptions
that can be generated. So you should
NOT use input unless youre putting
something in for temporary testing, to
be used only by someone who knows a
bit about Python expressions.

raw_input always returns a string
because, heck, thats what you always
type in … but then you can easily
convert it to the specific type you
want, and catch the specific
exceptions that may occur. Hopefully
with that explanation, its a
no-brainer to know which you should


Note: this is only for Python 2. For Python 3, raw_input() has become plain input() and the Python 2 input() has been removed.

Indent it! first. That would take care of your SyntaxError.

Apart from that there are couple of other problems in your program.

  • Use raw_input when you want accept string as an input. input takes only Python expressions and it does an eval on them.

  • You are using certain 8bit characters in your script like . You might need to define the encoding at the top of your script using # -*- coding:latin-1 -*- line commonly called as coding-cookie.

  • Also, while doing str comparison, normalize the strings and compare. (people using lower() it) This helps in giving little flexibility with user input.

  • I also think that reading Python tutorial might helpful to you. 🙂

Sample Code

#-*- coding: latin1 -*-

while 1:
    date=raw_input(Example: March 21 | What is the date? )
    if date.lower() == march 21:


Python unexpected EOF while parsing

I had this error, because of a missing closing parenthesis on a line.

I started off having an issue with a line saying:
invalid syntax (<string>, line ...)?
at the end of my script.

I deleted that line, then got the EOF message.

Leave a Reply

Your email address will not be published. Required fields are marked *