python什么方法能把../这样的网址转换成真实地址呢?,python成真,最近写程序遇到了些问题,


最近写程序遇到了些问题,做短网址的时候会遇到

http://url.com/upload/img/2012/08/../../xxxx

这样的网址,想将这些相对路径还原成绝对路径,来保证数据的唯一性,应该转换成下面这样吧

http://url.com/upload/img/xxxx

python 下有没有相应的方法或者相关的包呢?

urlparse库有的。python这种lib非常多,有时不用自己折腾,直接搜

写个正则,比如:

\/[^/]+\/\.\.\/

然后把符合这个正则的内容(形如“/abc/../”的),循环替换成“/”:

http://url.com/upload/img/2012/08/../../xxxxhttp://url.com/upload/img/2012/../xxxx            // <= 替换http://url.com/upload/img/xxxx                    // <= 再替换

直接看代码:

import osimport urlparseurl = "http://url.com/upload/img/2012/08/../../xxxx"url = url.replace(r"/./",r'/');u = urlparse.urlparse(url)path = os.path.os.path.normpath(u.path);path = path.replace("\\","/")url = urlparse.urljoin(url,path)

如果在 linux 下, path = path.replace("\\","/") 这个可以省略之

比较简单的办法就是使用egenix-mx-base

In [1]: import mx.URLIn [2]: url=mx.URL.URL("http://url.com/upload/img/2012/08/../../xxxx")In [3]: print url.urlhttp://url.com/upload/img/xxxx
import osimport urlparseURL = "http://url.com/upload/img/2012/08/../../xxxx"u = urlparse.urlparse(URL)print os.path.realpath(u.path)

编橙之家文章,

评论关闭