2

我目前正在从事一个涉及拆分 url 的项目。我使用了 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']

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

4

5 回答 5

5

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

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

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

很常见。


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

这可能是有意义的。

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

文件名是“问题”

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

该目录是“问题”,空字符串暗示了默认文件名。

于 2011-07-12T18:50:33.787 回答
3

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

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

或者像这样,如果只有前导'/':

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

否则,如果也尾随:

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

并且至少如果路径中的字符串总是从单个 '/' 开始,那么最简单的方法是:

path[1:].split('/')
于 2011-07-12T18:49:35.300 回答
2
pathlist = paths.strip('/').split("/")
于 2011-07-12T18:56:50.657 回答
1

删除空项目?

pathlist.remove('')
于 2011-07-12T18:50:42.200 回答
1

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

path_list = [(p) for p in path.split('/') if len(p)]
于 2011-07-12T19:42:09.107 回答