任何人都可以解释为什么在运行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
答案 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()
}