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

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

提问人:Akash Joshi 提问时间:4/4/2017 最后编辑:Karl KnechtelAkash Joshi 更新时间:1/27/2023 访问量:965138

问:

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

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 中的相关问题:为什么当我只按 Enter 键时 input() 给出 SyntaxError?

python 语法错误 eof

评论

3赞 4/4/2017
“我试过缩进”是什么意思?
1赞 Akash Joshi 4/4/2017
感谢您的编辑
0赞 4/4/2017
现在代码又一团糟。请正确缩进。由于缩进不正确,您当前的代码(如您现在所拥有的)将在第 3 行失败。我修复了您的代码语法一次,但是您再次对其进行了编辑,使其再次不正确。
0赞 Akash Joshi 4/4/2017
非常抱歉
0赞 Felix 4/4/2017
您使用的是 ipython/jupyter 笔记本还是 ipython 控制台?

答:

106赞 Felix 4/4/2017 #1

这意味着在所有代码块完成之前,源代码的末尾已经到达。代码块以 like 语句开头,之后至少需要一行包含应包含的代码。SyntaxError: unexpected EOF while parsingfor i in range(100):

您似乎在 ipython 控制台中逐行执行程序。这适用于单个语句,如 for 循环,但不适用于代码块,如 for。请参阅以下示例: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,

评论

1赞 Bersan 3/31/2021
我很困惑,因为在终端上,它假设命令没有完成,但在调试器控制台上,它似乎确实没有做同样的事情
0赞 Geoff Langenderfer 5/9/2021
在 python3.9 中,这将返回IndentationError: expected an indented block
10赞 Mike from PSG 12/13/2017 #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 行 (自己。^ SyntaxError:解析时意外的 EOF

进程完成,退出代码为 1

评论

0赞 Ekrem Dinçel 5/7/2020
为什么它会说“第 1 行有错误”呢?这太烦人了。
0赞 Mike from PSG 5/7/2020
我从来没有想过那部分。这实际上可能是一个线索。我刚刚在我正在编辑的文件中犯了同样的错误。如果你把我的错误消息拉出来,所以它没有被包装,你会看到它说错误在'文件“”第1行'中。在我现在正在编辑的文件中,我做了一个错误的 f 字符串,这次我得到了一个不同的错误:文件“<fstring>”,第 1 行。所以至少它告诉我它是在 f 弦中。我不是一个出色的 Python 内部人员。我的猜测是它以类似文件的方式处理 f 字符串,无论这意味着什么(对不起,我真的在拉伸)。
6赞 Eerik Sven Puudist 4/16/2019 #3

这是我产生此异常的错误之一:我有一个没有任何或块的块。这是行不通的:tryexceptfinally

try:
    lets_do_something_beneficial()

要解决此问题,请添加一个 or 块:exceptfinally

try:
    lets_do_something_beneficial()
finally:
    lets_go_to_sleep()
0赞 Prince Vijay 6/20/2019 #4

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

错误出现在带有 (') 符号的行尾;此错误始终意味着您有语法错误。

68赞 Mike G 7/1/2019 #5

这也可能意味着您缺少或有太多括号。例如,这有太多,并且会导致意外:EOF

print(9, not (a==7 and b==6)
4赞 tinyhare 5/15/2020 #6

在某些情况下可能会导致此问题,如果它占据代码中间,它将是“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
2赞 Ali H. Kudeir 5/28/2021 #7

我在尝试使用空字符串时遇到了此错误。 例如:eval

query = eval(req.body)

我改用了,错误消失了。json.loads()

0赞 John Carr 5/11/2022 #8

有时是由于忘记在 try/except 语句上添加 Except 而造成的。

评论

0赞 Dani3le_ 5/16/2022
这并不能提供问题的答案。一旦你有足够的声誉,你就可以对任何帖子发表评论;相反,提供不需要提问者澄清的答案。- 来自评论
-1赞 Super Kai - Kazuya Ito 11/16/2022 #9

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

SyntaxError:解析时出现意外的 EOF

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

print("Hello"
             ↑
           Here

或者,当我忘记放到类或函数时,如下所示:pass

class Person:
    # pass
def test():
    # pass