python方法中的SyntaxException。不确定为什么

时间:2016-06-02 05:24:24

标签: python

任何人都可以解释为什么在运行setup.py install时出现以下语法错误:

异常

SyntaxError: ('invalid syntax', ('build/bdist.linux-x86_64/egg/cardstream/payment.py', 46, 15, '            for key, value in parse_qs(query).items()\n'))

代码

 @classmethod
 def decode(this, query):

      """Decode a request/response from the given query string.
      """

      return {
          key: value if len(value) > 1 else value[0]
              for key, value in parse_qs(query).items()
      }

它引用的行是for。我对Python很熟悉,但并不是说我能弄清楚为什么会呻吟。

编辑为了完整起见,以下是手动运行脚本时的例外情况:

[...pythonsdk]$ python test/test_gateway.py
Traceback (most recent call last):
  File "test/test_gateway.py", line 4, in <module>
    from REMOVED.payment import Gateway
  File "/usr/lib/python2.6/site-packages/REMOVED-0.0.1-py2.6.egg/REMOVED/payment.py", line 46
    for key, value in parse_qs(query).items()
      ^
SyntaxError: invalid syntax

2 个答案:

答案 0 :(得分:1)

只需将dict理解转换为等效的dict()构造函数调用:

return dict((
          (key, value if len(value) > 1 else value[0])
              for key, value in parse_qs(query).items()
      ))

答案 1 :(得分:0)

它不喜欢你在不同的行上分割词典理解。

只需将其放在一行:

return {
    key: value if len(value) > 1 else value[0] for key, value in parse_qs(query).items()
}

或者如果您必须拆分使用行继续符\

return {
    key: value if len(value) > 1 else value[0] \
        for key, value in parse_qs(query).items()
}