2012-03-05 3 views
1

Как читать шаблоны URL-адресов с пробелами, которые снимают мои целевые каталоги. .Проблемы с маршрутизацией python с данными URL

url= http://example.appspot.com/abc%20asd >>> abc asd 

В настоящее время я кодирую в python и что-то не так с моим регулярным выражением. Заранее спасибо!

class MainMain(webapp.RequestHandler): 
    def get(self,args): 
     self.response.out.write('hello '+args) 
def main(): 
    application = webapp.WSGIApplication([('/', MainMain),('/(\w+)',MainMain)], debug=True) 
    util.run_wsgi_app(application) 

if __name__ == '__main__': 
    main() 

ответ

1

Часто такие шаблоны оцениваются по порядку, причем первое соответствие префикса является выбранным.

Попробуйте переместить наиболее общее регулярное выражение до конца:

application = webapp.WSGIApplication([ 
    ('/(\w+)',MainMain)], 
    ('/', MainMain), 
    debug=True) 
+0

Интересно. Я думаю, что эта часть отвечает за это поведение: [python/lib/webapp2/webapp2.py] (http://code.google.com/codesearch#Qx8E-7HUBTk/trunk/python/lib/webapp2/webapp2.py&q= WSGIApplication% 20package: http: //googleappengine%5C.googlecode%5C.com&l=1163) – nodakai

+0

Привет, я понял, что упустил самую важную часть моего вопроса! Я хотел спросить, что должен делать мой regrex, если мой URL-адрес выглядит примерно так: «http://example.appspot.com/asd asd» с пространством, находящимся там, или замененным на% 20, а напечатанное значение «asd» ASD». Благодаря! – Junhao

+0

Вам нужно добавить '\ s' для пробелов, что-то вроде'/([\ w \ s] + '. – Amber

0
>>> url = 'http://example.appspot.com/abc%20asd' 
>>> import urllib 
>>> import urlparse 
>>> urllib.unquote_plus(urlparse.urlparse(url)[2][1:]) 
'abc asd' 
+0

hihi спасибо за то, что помогли мне с этими вопросами. Однако можно сделать его более динамичным, пользователь просто набирает URL-адрес, и я могу распечатать все, что он набрал, включая пробелы. Спасибо! – Junhao

+0

Просто замените 'url' любой переменной, содержащей ввод пользователя. –

Смежные вопросы