最近写程序遇到了些问题,做短网址的时候会遇到
http://url.com/upload/img/2012/08/../../xxxx
这样的网址,想将这些相对路径还原成绝对路径,来保证数据的唯一性,应该转换成下面这样吧
http://url.com/upload/img/xxxx
python 下有没有相应的方法或者相关的包呢?
最近写程序遇到了些问题,做短网址的时候会遇到
http://url.com/upload/img/2012/08/../../xxxx
这样的网址,想将这些相对路径还原成绝对路径,来保证数据的唯一性,应该转换成下面这样吧
http://url.com/upload/img/xxxx
python 下有没有相应的方法或者相关的包呢?
比较简单的办法就是使用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.url http://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("\\","/")
这个可以省略之
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答978 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决