我正在尝试使用Google App Engine处理映射。
正则表达式是这样的:
('/api/1/apps/([-0-9a-zA-Z]+)/values/(.+)', ApiValueHandler)
当网址看起来像/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
答案 0 :(得分:1)
使用urllib.unquote
来取消字符串。
答案 1 :(得分:0)
未转义字符由quote
定义:字母,数字,_.-
和默认安全字符/
。
http://docs.python.org/library/urllib.html#urllib.quote
只需在匹配的字符串上使用unquote
。
>>> urllib.unquote('/%24/')
'/$/'