为什么当我输入代码时,IPython REPL 告诉我“SyntaxError:解析时出现意外的 EOF”?

问题描述 投票:0回答:9

我在运行这部分代码时遇到错误。我尝试了一些现有的解决方案,但没有一个有帮助。

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

IDLE或命令行REPL中的相关问题:命令行输入导致SyntaxError

python syntax-error eof
9个回答
107
投票

SyntaxError: unexpected EOF while parsing
表示在所有代码块完成之前已到达源代码末尾。代码块以类似
for i in range(100):
的语句开头,并且之后至少需要一行包含应包含在其中的代码。

看起来您正在 ipython 控制台中逐行执行程序。这适用于像

a = 3
这样的单个语句,但不适用于像 for 循环这样的代码块。请参阅以下示例:

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,

69
投票

这也可能意味着您缺少或有太多括号。例如这个太多了,会导致意想不到的结果

EOF
:

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

10
投票

我的语法错误半隐藏在 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号线 (自己。) ^ 语法错误:解析时出现意外的 EOF

进程已完成,退出代码为 1


6
投票

这是我产生此异常的错误之一:我有一个

try
块,没有任何
except
finally
块。这行不通:

try:
    lets_do_something_beneficial()

要解决此问题,请添加

except
finally
块:

try:
    lets_do_something_beneficial()
finally:
    lets_go_to_sleep()

4
投票

在某些情况下可能会导致此问题,如果它发生在代码中间,则会出现“IndentationError:预期缩进块”或“SyntaxError:无效语法”,如果出现在最后一行,则可能会出现“SyntaxError:解析时出现意外的 EOF”:

缺少“if”、“while”和“for”语句的主体-->

root@nest:~/workplace# cat test.py
l = [1,2,3]
for i in l:
root@nest:~/workplace# python3 test.py
  File "test.py", line 3

               ^
SyntaxError: unexpected EOF while parsing

未闭合的括号(特别是在复杂的嵌套状态中)-->

root@nest:~/workplace# cat test.py
l = [1,2,3]
print( l
root@nest:~/workplace# python3 test.py
  File "test.py", line 3

            ^
SyntaxError: unexpected EOF while parsing

1
投票

我在尝试

eval
空字符串时遇到此错误。 例如:

query = eval(req.body)

我用

json.loads()
代替,错误就消失了。


0
投票

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

错误出现在带有 (') 符号的行末尾;这个错误总是意味着你有语法错误。


0
投票

有时是由于忘记在 try/ except 语句上添加 except 。


-1
投票

我在下面遇到了同样的错误:

语法错误:解析时出现意外的 EOF

当我忘记了尾随括号时,如下所示:

print("Hello"
             ↑
           Here

或者,当我忘记将

pass
放入类或函数时,如下所示:

class Person:
    # pass
def test():
    # pass
© www.soinside.com 2019 - 2024. All rights reserved.