Python Mako在有效代码上给出SyntaxerError?

Python Mako在有效代码上给出SyntaxerError?,python,syntax-error,mako,Python,Syntax Error,Mako,我试图在mako模板中使用代码块,但不管我在代码块中添加了什么,mako都坚持认为这是语法错误 下面是有问题的代码块的一个片段: <td class="col_sm_space">&nbsp;</td> <% if session.dist == "metric": delta_distance = "%.2fkm" % (trk["d_distance"] / 1000.0) delta_fuel

我试图在mako模板中使用代码块,但不管我在代码块中添加了什么,mako都坚持认为这是语法错误

下面是有问题的代码块的一个片段:

  <td class="col_sm_space">&nbsp;</td>
  <%
      if session.dist == "metric":
          delta_distance = "%.2fkm" % (trk["d_distance"] / 1000.0)
          delta_fuel = "%.2fl" % (trk["d_fuel"])
          delta_co2 = "%.2fg" % (trk["d_co2"])
          delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])
          trip_av_speed = "%dkm/h" % int(trk["trip_av_speed"])
          trip_peak_speed = "%dkm/h" % int(trk["trip_peak_speed"])
  %>
  <td class="col_field" title="${delta_distance}">${trk["trip_distance"]}</td>

${trk[“行程距离”]}
我在
if session.dist==“metric”:
行中得到了语法错误,尽管我可以用任何东西(例如
foo=“bar”
)替换它,但它仍然会给我错误

Mako回来了:

SyntaxException:(SyntaxError)文件“”第271行字符:9\n处的无效语法(第5行)('if session.dist==“metric”:\\n delta_distance='),引用者:


271
是开头
我有一个非常令人沮丧的经历。至少在我的情况下,错误报告是完全错误的。它指向python块的第一行,就像您的一样,当实际错误出现在另一个python块中时,50行之后


很可能,您有一个简单的语法错误,例如错误的缩进或if语句后缺少冒号。。。我给你的调试建议没有比仔细检查python更好的了。如果有可能在Mako之外对python块进行单元测试,那可能会有所帮助。

我有过一次非常令人沮丧的经历。至少在我的情况下,错误报告是完全错误的。它指向python块的第一行,就像您的一样,当实际错误出现在另一个python块中时,50行之后


很可能,您有一个简单的语法错误,例如错误的缩进或if语句后缺少冒号。。。我给你的调试建议没有比仔细检查python更好的了。如果可以在Mako之外对python块进行单元测试,这可能会有所帮助。

这是很久以前提出的问题,但记录在案的是,在这一行中缺少一个左括号,“(”,不清楚这是否是导致问题的原因,但似乎很可能:

delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])
应至少:

delta_co2_rate = "%.2fg/l" % (trk["d_co2_rate"])

这是很久以前提出的问题,但根据记录,在这一行中有一个缺少的左paren,“(”,不清楚这是否是导致问题的原因,但似乎有可能:

delta_co2_rate = "%.2fg/l" % trk["d_co2_rate"])
应至少:

delta_co2_rate = "%.2fg/l" % (trk["d_co2_rate"])

在mako模板中,
当您使用条件语句(例如if、for等)时,应该是这样的:
%if条件

一些代码
%endif

对于分配,您必须将该内容嵌入


中,如果您遵循此操作,您的代码将运行。

在mako模板中,
当您使用条件语句(例如If、for等)时,应该是这样的:
%If condition

一些代码
%endif

而对于分配,您必须将该东西嵌入


如果您遵循此操作,您的代码将运行。

我的经验是,我有这样的If语法:

% if ${use_force_ssl} == 1:
相反,它应该是这样的:

% if use_force_ssl == 1:

希望这对某人有所帮助。

我的经验是,我有这样一个if语法:

% if ${use_force_ssl} == 1:
相反,它应该是这样的:

% if use_force_ssl == 1:

希望这对其他人有所帮助。

您的行中是否有不可见的字符?或者与其他工作文件中的换行符不同?没有,格式相同。Unix行结尾,行尾没有额外的空格,也没有制表符(缩进为4个空格)。您的行中是否有任何不可见的字符?或者与其他工作文件中的换行符不同?不,格式相同。Unix行结尾,行尾没有额外的空格,并且没有制表符(缩进为4个空格)。