我是python的新手,我有一个错误,我试图自己解决几个小时而没有结果。 (我使用Pycharm& SQLite)。这是我的代码:
Id = cur.execute("select id from abonnement where libelle=%s and prix=%s and estPackGar=%s ;" (abonnement.libelle, abonnement.prix, abonnement.estPackGar))
这就是我得到的那条线:
TypeError: 'str' object is not callable
我对导致这种情况的原因一无所知。好吗?
答案 0 :(得分:1)
您错过了%
,因此格式化不会按照您的意愿应用。相反,你需要:
Id = cur.execute("select id from abonnement where libelle=%s and prix=%s and estPackGar=%s ;" % (abonnement.libelle, abonnement.prix, abonnement.estPackGar))
至于你得到错误的原因: 基本上你的错误信息是由字符串后面的括号直接产生的,一个简化的例子是
"abc %s"(variable)
在这种情况下,python尝试调用"abc %s"
,就好像它是一个失败的函数,因为它实际上是一个字符串。这就是为什么你得到" str不可调用"错误。但是,如果您正确使用字符串格式,那么您将获得所需的结果:
"abc %s"%(variable)
我建议改为使用.format
,请参阅此PEP:https://www.python.org/dev/peps/pep-3101/以及此问题以获取更多相关详细信息:Python string formatting: % vs. .format