SyntaxError: неожиданный EOF при разборе

Я получаю сообщение об ошибке при выполнении этой части кода. попробовал некоторые из существующих решений, ни одно из них не помогло

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']))'

Я всегда получаю эту ошибку

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

Ответы

Ответ 1

SyntaxError: unexpected EOF while parsing означает, что конец вашего исходного кода был достигнут до того, как все блоки кода были завершены. Блок кода начинается с оператора, подобного for я in range(100): и требует по крайней мере одну строку после этого, которая содержит код, который должен быть в нем.

Кажется, что вы выполняли свою программу по строкам в консоли ipython. Это работает для одиночных операторов типа a = 3 но не для кодовых блоков, например для циклов. См. Следующий пример:

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

Чтобы избежать этой ошибки, вы должны ввести весь блок кода как один вход:

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

Ответ 2

Моя синтаксическая ошибка была полускрыта в f-строке

 print(f'num_flex_rows = {self.}\nFlex Rows = {flex_rows}\nMax elements = {max_elements}')

должно быть

 print(f'num_flex_rows = {self.num_rows}\nFlex Rows = {flex_rows}\nMax elements = {max_elements}')

Ошибка не была отмечена красной линией PyCharm.

Это дало мне ключ, но когда я искал это сообщение об ошибке, он, конечно, не нашел ошибку в этом бите кода выше.

Если бы я более внимательно посмотрел на сообщение об ошибке, я бы нашел ошибку ". Видя линию 1 было обескураживающим и, следовательно, не обращало пристального внимания :-( Поиск

я.)

ничего не давали. поиск

самостоятельно.

дал практически все: -\

Если я смогу помочь вам избежать еще одной минуты до проверки вашего кода, то миссия выполнена :-)

C:\Python\Anaconda3\python.exe C: /Python/PycharmProjects/FlexForms/FlexForm.py Файл "", строка 1 (self.) ^ SyntaxError: неожиданный EOF при разборе

Процесс завершен с кодом выхода 1

Ответ 3

Это может также просто означать, что вы пропустили или у вас слишком много скобок. Например, это слишком много и приведет к неожиданному EOF:

    print(9, not (a==7 and b==6)

Ответ 4

Вот одна из моих ошибок, которая вызвала это исключение: у меня был блок try без каких-либо блоков except или finally. Это не будет работать:

try:
    lets_do_something_beneficial()

Чтобы это исправить, добавьте except или finally блок:

try:
    lets_do_something_beneficial()
finally:
    lets_go_to_sleep()

Ответ 5

Это 2 пробела на начальном для цикла и должен быть 4 или табуляцией.

Ответ 6

elec_and_weather['DEMAND_t-%i'% k] = np.zeros(len(elec_and_weather['DEMAND']))'

Ошибка появляется в конце строки, где у вас есть знак ('); эта ошибка всегда означает, что у вас есть синтаксическая ошибка.