Python查找问题
我正在使用Python来从链接中提取文件名,使用的是rfind方法,代码如下:
url = "http://www.google.com/test.php"
print url[url.rfind("/") +1 : ]
这个方法在没有斜杠(/)结尾的链接上效果不错,可以返回“test.php”。但是我遇到了一些链接,像这样以斜杠结尾:“http://www.google.com/test.php/”。当链接末尾有斜杠时,我就无法正确获取页面名称了,有谁能帮帮我吗?
谢谢
7 个回答
1
文件名如果最后有一个斜杠(/),从技术上讲,它仍然是一个路径的定义,表示要读取索引文件。如果你真的有一个文件名是以 test.php/
结尾的,我会认为这是一个错误。无论如何,在运行你的代码之前,你可以把最后的斜杠去掉,方法如下:
url = url.rstrip('/')
4
使用[r]strip可以去掉字符串末尾的斜杠:
url.rstrip('/').rsplit('/', 1)[-1]
如果你需要处理更多种类的URL,比如包含问号的查询、井号的锚点,或者没有路径的情况,最好使用urlparse来处理:
path= urlparse.urlparse(url).path
return path.rstrip('/').rsplit('/', 1)[-1] or '(root path)'
9
光是把最后的斜杠去掉是没用的,因为你可能会遇到这样的链接:
http://www.google.com/test.php?filepath=tests/hey.xml
...在这种情况下,你会得到“hey.xml”。与其手动去检查这些情况,不如使用 urlparse 来去掉那些参数,然后再进行其他人建议的检查:
from urlparse import urlparse
url = "http://www.google.com/test.php?something=heyharr/sir/a.txt"
f = urlparse(url)[2].rstrip("/")
print f[f.rfind("/")+1:]