SyntaxError:解析时出现意外的 EOF

Posted

技术标签:

【中文标题】SyntaxError:解析时出现意外的 EOF【英文标题】:SyntaxError: unexpected EOF while parsing 【发布时间】:2017-08-28 14:17:28 【问题描述】:

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

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

【问题讨论】:

“我试过缩进”是什么意思? 感谢编辑 现在代码又乱了。请正确缩进。由于缩进不正确,您当前的代码(就像您现在拥有的那样)将在第 3 行失败。我修复了您的代码语法一次,但您再次对其进行了编辑,使其再次不正确。 非常抱歉 你使用的是 ipython/jupyter notebook 还是 ipython 控制台? 【参考方案1】:

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,

【讨论】:

我很困惑,因为在终端上,它假定命令没有完成,但在调试器控制台上似乎确实没有做同样的事情 在python3.9中,返回IndentationError: expected an indented block【参考方案2】:

这也可能意味着您缺少括号或括号过多。比如这个太多了,会导致意想不到的EOF

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

【讨论】:

【参考方案3】:

我的语法错误被半隐藏在一个 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 结束

【讨论】:

为什么它会显示“第 1 行错误”?这太烦人了。 我从没想过那部分。这实际上可能是一个线索。我刚刚在我正在编辑的文件中犯了同样的错误。如果您将我的错误消息展开,使其没有被包装,您会看到它说错误在“文件”第 1 行中。在我现在正在编辑的文件中,我制作了一个错误的 f 字符串,这次我得到了一个不同的错误:文件“”,第 1 行。所以至少它告诉我它在一个 f 字符串中。我不是一个出色的 Python 内部人员。我的猜测是它以类似文件的方式处理 f 字符串,无论这意味着什么(对不起,我真的很紧张)。【参考方案4】:

这是我产生此异常的错误之一:我有一个 try 块,没有任何 exceptfinally 块。这不起作用:

try:
    lets_do_something_beneficial()

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

try:
    lets_do_something_beneficial()
finally:
    lets_go_to_sleep()

【讨论】:

【参考方案5】:

在某些情况下会导致这个问题,如果它发生在代码中间会是“IndentationError: expected an indented block”或“SyntaxError: invalid syntax”,如果它在最后一行可能是“ SyntaxError: unexpected EOF while parsing":

缺少“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

【讨论】:

【参考方案6】:

我在尝试eval 一个空字符串时遇到了这个错误。 例如:

query = eval(req.body)

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

【讨论】:

【参考方案7】:

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

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

【讨论】:

以上是关于SyntaxError:解析时出现意外的 EOF的主要内容,如果未能解决你的问题,请参考以下文章

SyntaxError:编译 ejs 时出现意外的 token.ejs

SyntaxError:在 Heroku 上托管 Discord 机器人时出现意外的令牌 '??='

Node.js SyntaxError:设置 Forge 查看器时出现意外标识符

Babel编译错误SyntaxError:使用spread运算符时出现意外的标记

将 Moment js 与 ASP 5/MVC6 一起使用时出现“未捕获的 SyntaxError:意外的令牌导入”

快速写入 JSON 文件时出现意外错误