Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python &引用;并非所有参数都在字符串格式化过程中转换;回溯_Python_String_Google App Engine - Fatal编程技术网

Python &引用;并非所有参数都在字符串格式化过程中转换;回溯

Python &引用;并非所有参数都在字符串格式化过程中转换;回溯,python,string,google-app-engine,Python,String,Google App Engine,下面的cgi.escape部分在dev服务器中抛出了回溯,但是当我注释掉cgi.escape时,我在RequestHandler上得到了语法错误。我正在学习谷歌的教程,其中包括一个表单的两个提交按钮,这对我来说是不清楚的,还有/sign?形式作用;我下面的表格是1(不是2)个提交按钮,用于组合文本和单选字段表格,所以我不确定我是否正确地完成了最后一部分,甚至是表格。我已经准备好了所有的进口货。在数据存储、电子表格或其他任何东西中获取这些用户表单值…非常感谢您的帮助 Traceback (most

下面的cgi.escape部分在dev服务器中抛出了回溯,但是当我注释掉cgi.escape时,我在RequestHandler上得到了语法错误。我正在学习谷歌的教程,其中包括一个表单的两个提交按钮,这对我来说是不清楚的,还有/sign?形式作用;我下面的表格是1(不是2)个提交按钮,用于组合文本和单选字段表格,所以我不确定我是否正确地完成了最后一部分,甚至是表格。我已经准备好了所有的进口货。在数据存储、电子表格或其他任何东西中获取这些用户表单值…非常感谢您的帮助

Traceback (most recent call last):   Fil "/home/paul/Desktop/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 701, in __call__
    handler.get(*groups)   File "/home/paul/Desktop/emot/index.py", line 39, in get
    cgi.escape(name))) TypeError: not all arguments converted during string formatting
代码:

name=self.request.get(“name”)
self.response.out.write(“”)
名字:

坏的

公平的

“%”(urllib.urlencode({“name”:name}), cgi.escape(name))#<<此处无字符串转换 类信息(webapp.RequestHandler):#<<注释掉^^时出现语法错误。 def post(自我): name=self.request.get(“name”) 访问者=访问者(父项=信息键(名称)) visitor.content=self.request.get(“心情”) visitor.put() self.redirect(“/?”+urllib.urlencode({“name”:name})) application=webapp.WSGIApplication([ (“/”,主页),#<
这就是您遇到问题的地方。请注意,这整段代码都包装在函数调用中:

self.response.out.write("""
    <form action="/sign?/s" method="post">
        <p>First Name: <input type="text" name="name"/></p>
        <p><input type="radio" name="mood" value="good">Good</p>
        <p><input type="radio" name="mood" value="bad">Bad</p>
        <p><input type="radio" name="mood" value="fair">Fair</p>
        <p><input type="submit"value="Process"></p>
    </form>
</body>
</html>""" % (urllib.urlencode({"name": name}), 
                cgi.escape(name))) # self.response.out.write ends here
剩下的是一个字符串格式化操作,格式为
“string literal”“”%(元组,of,value)
。要使此操作起作用,需要为要包含在字符串中的每个值包含说明符(我发现“hooks”是一个更具描述性的术语)。这些将始终以百分号开头,后面有一个或多个字符。您可以阅读更多有关它的内容,但有几个快速示例包括整数的
%d
、字符串的
%s
、浮点值的
%f

您的代码示例对此操作有两个参数,
urllib.urlencode({“name”:name})
,和
cgi.escape(name)
。但是,您的字符串不包含任何说明符(
%s
等),以便解释器理解您要将它们放在哪里


在我看来,您有两种选择—您可以将所有参数一起删除(但请确保为
self.response.out.write
call]留下一个尾随括号),或者将钩子放在需要的地方。

这就是您遇到问题的地方。请注意,这整段代码都包装在函数调用中:

self.response.out.write("""
    <form action="/sign?/s" method="post">
        <p>First Name: <input type="text" name="name"/></p>
        <p><input type="radio" name="mood" value="good">Good</p>
        <p><input type="radio" name="mood" value="bad">Bad</p>
        <p><input type="radio" name="mood" value="fair">Fair</p>
        <p><input type="submit"value="Process"></p>
    </form>
</body>
</html>""" % (urllib.urlencode({"name": name}), 
                cgi.escape(name))) # self.response.out.write ends here
剩下的是一个字符串格式化操作,格式为
“string literal”“”%(元组,of,value)
。要使此操作起作用,需要为要包含在字符串中的每个值包含说明符(我发现“hooks”是一个更具描述性的术语)。这些将始终以百分号开头,后面有一个或多个字符。您可以阅读更多有关它的内容,但有几个快速示例包括整数的
%d
、字符串的
%s
、浮点值的
%f

您的代码示例对此操作有两个参数,
urllib.urlencode({“name”:name})
,和
cgi.escape(name)
。但是,您的字符串不包含任何说明符(
%s
等),以便解释器理解您要将它们放在哪里


在我看来,您有两种选择—您可以将所有参数一起删除(但请确保为
self.response.out.write
call]留下一个尾随括号),或者将钩子放在您需要的地方。

感谢Hannele提供了一个清晰的解释。我应该注意到%…说明符看起来像占位符。只需删除参数并在需要时报告。非常感谢@铺。。如果答案有用,你应该开始接受。。以下是方法和原因:感谢Channele的清晰解释。我应该注意到%…说明符看起来像占位符。只需删除参数并在需要时报告。非常感谢@铺。。如果答案有用,你应该开始接受。。以下是方法和原因:
"""
<form action="/sign?/s" method="post">
        <p>First Name: <input type="text" name="name"/></p>
        <p><input type="radio" name="mood" value="good">Good</p>
        <p><input type="radio" name="mood" value="bad">Bad</p>
        <p><input type="radio" name="mood" value="fair">Fair</p>
        <p><input type="submit"value="Process"></p>
    </form>
</body>
</html>""" % (urllib.urlencode({"name": name}), 
                cgi.escape(name)) # one less bracket!