我目前正在开发一个涉及拆分网址的项目。我已经使用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']
我不想要这些空字符串。我意识到我可以通过制作一个没有它们的新列表来删除它们,但这看起来很草率。有没有更好的方法来删除空字符串和斜杠?
答案 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)]