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 字符串,这次我得到了一个不同的错误:文件“这是我产生此异常的错误之一:我有一个 try
块,没有任何 except
或 finally
块。这不起作用:
try:
lets_do_something_beneficial()
要解决此问题,请添加 except
或 finally
块:
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运算符时出现意外的标记