玩蛇网提供最新Python编程技术信息以及Python资源下载!
django网站项目展示大全

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/../../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("\\","/") 这个可以省略之

比较简单的办法就是使用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
import os
import urlparse

URL = "http://url.com/upload/img/2012/08/../../xxxx"

u = urlparse.urlparse(URL)
print os.path.realpath(u.path)

玩蛇网文章,转载请注明出处和文章网址:https://www.iplaypy.com/wenda/wd20447.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年05月31日 - 11时18分24秒 发布自玩蛇网

您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容
我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules