pythonsyntax-erroreof

Why does the IPython REPL tell me "SyntaxError: unexpected EOF while parsing" as I input the code?


I'm getting an error while running this part of the code. I tried some of the existing solutions, but none of them helped.

elec_and_weather = pd.read_csv(r'C:\HOUR.csv', parse_dates=True,index_col=0)
# Add historic DEMAND to each X vector
 for i in range(0,24):
    elec_and_weather[i] = np.zeros(len(elec_and_weather['DEMAND']))
    elec_and_weather[i][elec_and_weather.index.hour==i] = 1
# Set number of hours prediction is in advance
n_hours_advance = 24

# Set number of historic hours used
n_hours_window = 24

for k in range(n_hours_advance,n_hours_advance+n_hours_window):
    elec_and_weather['DEMAND_t-%i'% k] = np.zeros(len(elec_and_weather['DEMAND']))'

I always get this error:

for i in range(0,24):
File "<ipython-input-29-db3022a769d1>", line 1
for i in range(0,24):
                     ^
SyntaxError: unexpected EOF while parsing

File "<ipython-input-25-df0a44131c36>", line 1
    for k in range(n_hours_advance,n_hours_advance+n_hours_window):
                                                                   ^
SyntaxError: unexpected EOF while parsing

Related problem in IDLE or the command-line REPL: Command-line input causes SyntaxError


Solution

  • The SyntaxError: unexpected EOF while parsing means that the end of your source code was reached before all code blocks were completed. A code block starts with a statement like for i in range(100): and requires at least one line afterwards that contains code that should be in it.

    It seems like you were executing your program line by line in the ipython console. This works for single statements like a = 3 but not for code blocks like for loops. See the following example:

    In [1]: for i in range(100):
      File "<ipython-input-1-ece1e5c2587f>", line 1
        for i in range(100):
                            ^
    SyntaxError: unexpected EOF while parsing
    

    To avoid this error, you have to enter the whole code block as a single input:

    In [2]: for i in range(5):
       ...:     print(i, end=', ')
    0, 1, 2, 3, 4,