我正在尝试获取与Google App Engine一起使用的处理程序映射。
正则表达式是这样的:
('/api/1/apps/([-0-9a-zA-Z]+)/values/(.+)', ApiValueHandler)
当 URL 看起来像/api/1/apps/50b96eb0/values/New%20note%2Fhello
传递给我的处理程序的值是 New%20note/hello
.如您所见,它无法逃脱斜杠,但不是空格。
是否有我在某处缺少的设置,或者我需要自己做一些无法逃避的事情?如果有一些值,它永远不会逃脱,是否有这些值的列表?
更新:
下面是一个测试应用,在装有 Python 2.5 的 Windows 7 上的开发服务器上运行时显示此行为。
main.py
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
class MainHandler(webapp.RequestHandler):
def get(self, blah):
self.response.out.write(blah)
app = webapp.WSGIApplication([('/(.*)', MainHandler)], debug=True)
util.run_wsgi_app(app)
app.yaml
application: engineapp
version: 1
runtime: python
api_version: 1
handlers:
- url: .*
script: main.py
使用 urllib.unquote
取消转义字符串。
例
未转义字符由quote
定义:字母、数字、_.-
和默认安全字符/
。
http://docs.python.org/library/urllib.html#urllib.quote
只需在匹配的字符串上使用unquote
即可。
>>> urllib.unquote('/%24/')
'/$/'
http://docs.python.org/library/urllib.html#urllib.unquote