最近写程序遇到了些问题,做短网址的时候会遇到
http://url.com/upload/img/2012/08/../../xxxx
这样的网址,想将这些相对路径还原成绝对路径,来保证数据的唯一性,应该转换成下面这样吧
http://url.com/upload/img/xxxx
python 下有没有相应的方法或者相关的包呢?
import os
import urlparse
URL = "http://url.com/upload/img/2012/08/../../xxxx
"
u = urlparse.urlparse(URL)
print os.path.realpath(u.path)
比较简单的办法就是使用egenix-mx-base
In [1]: import mx.URL In [2]: url=mx.URL.URL("http://url.com/upload/img/2012/08/../../xxxx
") In [3]: print url.urlhttp://url.com/upload/img/xxxx
写个正则,比如:
\/[^/]+\/\.\.\/
然后把符合这个正则的内容(形如“/abc/../”的),循环替换成“/”:
http://url.com/upload/img/2012/08/../../xxxx
http://url.com/upload/img/2012/../xxxx // <= 替换http://url.com/upload/img/xxxx
// <= 再替换
直接看代码:
import os
import urlparse
url = "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("\\","/")
这个可以省略之
urlparse库有的。python这种lib非常多,有时不用自己折腾,直接搜
正文完