在Python中将URL拆分为列表
我现在在做一个项目,需要把一个网址分开。我使用了urlparse模块来拆分网址,现在我只在处理路径部分。
问题是,当我试图用分隔符“/”来分割这个字符串,以便分开不同的目录时,我的列表里出现了空字符串。
比如,当我这样做的时候:
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 个回答
在编程中,有时候我们需要处理一些数据,比如从一个地方获取数据,然后在另一个地方使用这些数据。这个过程就像是把水从一个水桶倒到另一个水桶里。
有些时候,我们会遇到一些问题,比如数据的格式不对,或者我们想要的数据没有被正确地获取到。这就像是你想要的水桶里没有水,或者水的颜色不对。
为了避免这些问题,我们可以使用一些工具和方法来确保数据能够顺利地从一个地方转移到另一个地方。这就像是使用一个漏斗来帮助你把水倒得更顺利,不会洒出来。
总之,处理数据就像是一个搬运的过程,我们需要确保每一步都做得正确,这样才能得到我们想要的结果。
pathlist = paths.strip('/').split("/")
我不想要这些空字符串。我知道我可以通过创建一个新的列表来去掉它们,但这样感觉有点麻烦。有没有更好的方法来去掉空字符串和斜杠呢?
什么?根据定义,只有一个空字符串,而且它总是排在第一位。
pathlist = path.split("/")[1:]
这很常见。
结尾的斜杠可以表示一个“空”的文件名。在这种情况下,可能会隐含一个默认的名字(比如 index.html)。
这可能是有意义的。
"http://example/url/being/used/to/show/problem"
文件名是“problem”。
"http://example/url/being/used/to/show/problem/"
目录是“problem”,而空字符串暗示了一个默认的文件名。
我对urllib不太熟悉,也不太清楚它输出的路径是什么样的,但我觉得可以用列表推导式来生成新的列表,方法如下:
[x for x in path.split("/") if x]
如果只是开头有一个'/',可以这样做:
path.lstrip('/').split("/")
如果结尾也有'/'的话,可以这样:
path.strip('/').split("/")
如果你的字符串路径总是以一个'/'开头,那么最简单的方法就是:
path[1:].split('/')