将URL拆分为python中的列表

时间:2011-07-12 18:46:07

标签: python urlparse urlsplit

我目前正在开发一个涉及拆分网址的项目。我已经使用urlparse模块来分解url,所以现在我只使用路径段。

问题在于,当我尝试基于分隔符“/”分割()字符串以分隔目录时,我最终在列表中找到空字符串。

例如,当我执行以下操作时:

import urlparse
url = "http://example/url/being/used/to/show/problem"
parsed = urlparse.urlparse(url)
path = parsed[2] #this is the path element

pathlist = path.split("/")

我得到了清单:

['', 'url', 'being', 'used', 'to', 'show', 'problem']

我不想要这些空字符串。我意识到我可以通过制作一个没有它们的新列表来删除它们,但这看起来很草率。有没有更好的方法来删除空字符串和斜杠?

5 个答案:

答案 0 :(得分:5)

  

我不想要这些空字符串。我意识到我可以通过制作一个没有它们的新列表来删除它们,但这看起来很草率。有没有更好的方法来删除空字符串和斜杠?

什么?根据定义,只有一个空字符串,它总是第一个。

pathlist = path.split("/")[1:] 

很常见。


尾部斜杠可能意味着“空”文件名。在这种情况下,可能隐含默认名称(例如index.html)

这可能很有意义。

"http://example/url/being/used/to/show/problem"

文件名是“问题”

"http://example/url/being/used/to/show/problem/"

目录是“问题”,空字符串隐含默认文件名。

答案 1 :(得分:3)

我不熟悉urllib及其路径输出,但认为形成新列表的一种方法可以通过以下方式使用list comprehension:

[x for x in path.split("/") if x]

或类似的东西如果只是领先'/':

path.lstrip('/').split("/")

否则如果尾随:

path.strip('/').split("/")

至少如果你的路径中的字符串总是从单个'/'开始而不是最简单的方式:

path[1:].split('/')

答案 2 :(得分:2)

pathlist = paths.strip('/').split("/")

答案 3 :(得分:1)

删除空项?

pathlist.remove('')

答案 4 :(得分:1)

我将此添加为对评论的评论,以防万一: 你不能使用列表推导来排除从拆分返回的空元素,即

path_list = [(p) for p in path.split('/') if len(p)]