2012-07-24 73 views
17

在Python脚本我称之为从rpy2的功能,但我得到这个错误:的Python:语法错误:关键字不能表达

#using an R module 
res = DirichletReg.ddirichlet(np.asarray(my_values),alphas, 
           log=False, sum.up=False) 
SyntaxError: keyword can't be an expression 

究竟错在哪里吗?

+2

关于你提到的更新:许多语法错误配备了插入符号'^'在引起解析错误令牌指向,他人(包括本)没有。在任何情况下,请注意错误消息,并在必要时[google错误信息](http://www.google.com/search?q=Python+“关键字+不能+ + + +表达式”)。 。在这种情况下,第一次点击应该已经清理了一些事情。 – 2012-07-24 15:02:14

+11

@SvenMarnach:使用Google搜索错误消息可以立即获得此页面。 – Thanatos 2014-02-27 19:19:12

回答

15

sum.up不是有效的关键字参数名称。关键字参数必须是有效的标识。你应该看看你正在使用的库的文档如何调用这个参数真的 - 也许sum_up

+0

是的,就是这样。我在处理R函数时忘记了所有的点都需要转换成下划线。所以'sum_up'完成了这个诀窍。 :) – 2012-07-24 14:52:49

+0

刚刚有相同的语法错误,因为我使用的参数名称为“my-argument-name”。您的回答帮助我发现将其重命名为“my_argument_name”可以解决错误。 – Flaudre 2015-06-25 02:45:36

6

这是Python的源解析器故障sum.up=False命名参数为sum.up是无效参数名称(您不能在参数名称中使用点 - 仅字母数字和下划线)。

-1

刚从%格式转换为.format()时,我刚刚得到这个问题。

上一页代码:

"SET !TIMEOUT_STEP %{USER_TIMEOUT_STEP}d" % {'USER_TIMEOUT_STEP' = 3} 

有问题的语法:

"SET !TIMEOUT_STEP {USER_TIMEOUT_STEP}".format('USER_TIMEOUT_STEP' = 3) 

的问题是,format是需要参数的函数。他们不能是字符串。 这是我见过的最糟糕的python错误消息之一。

更正代码:

"SET !TIMEOUT_STEP {USER_TIMEOUT_STEP}".format(USER_TIMEOUT_STEP = 3) 
+0

不知道你是否回答了OP的问题,但是你回答了我关于格式函数需要参数而不是字符串的问题。 – chishaku 2015-01-20 15:56:07

4

我想我们很多人谁来到这个页面有问题Scikit学习,来解决它一个方法是创建一个带参数的字典,并把它传递给型号:

params = {'C': 1e9, 'gamma': 1e-07} 
cls = SVC(**params)  
0

使用弹性搜索DSL API,你可能会碰到同样的错误与

s = Search(using=client, index="my-index") \ 
    .query("match", category.keyword="Musician") 

您可以通过执行解决它:

s = Search(using=client, index="my-index") \ 
    .query({"match": {"category.keyword":"Musician/Band"}}) 
相关问题