当前位置:  开发笔记 > 编程语言 > 正文

如何在Python中将url字符串拆分为单独的部分?

如何解决《如何在Python中将url字符串拆分为单独的部分?》经验,为你挑选了4个好方法。

我决定今晚学习python :)我非常了解C(在其中写了一个操作系统)所以我不是编程中的菜鸟所以python中的所有东西看起来都很简单,但我不知道如何解决这个问题问题:假设我有这个地址:

http://example.com/random/folder/path.html 现在我如何从中创建两个字符串,一个包含服务器的"基本"名称,因此在此示例中它将是 http://example.com / 和另一个包含没有最后文件名的东西,所以在这个例子中它将是 http://example.com/random/folder/ .另外我当然知道分别找到第3个和最后一个斜线的可能性,但也许你知道一个更好的方法:]在两种情况下都有尾随斜线也很酷但是我不在乎因为它可以很容易地添加.那么任何人都有一个好的,快速的,有效的解决方案吗?或者只有"我的"解决方案,找到斜线?

谢谢!



1> sykora..:

python 2.x中的urlparse模块(或python 3.x中的urllib.parse)将是这样做的方法.

>>> from urllib.parse import urlparse
>>> url = 'http://example.com/random/folder/path.html'
>>> parse_object = urlparse(url)
>>> parse_object.netloc
'example.com'
>>> parse_object.path
'/random/folder/path.html'
>>> parse_object.scheme
'http'
>>>

如果您想在url下的文件路径上做更多工作,可以使用posixpath模块:

>>> from posixpath import basename, dirname
>>> basename(parse_object.path)
'path.html'
>>> dirname(parse_object.path)
'/random/folder'

之后,您可以使用posixpath.join将部件粘合在一起.

编辑:我完全忘记了Windows用户会在os.path中的路径分隔符上窒息.我阅读了posixpath模块文档,它有一个特殊的URL操作参考,所以一切都很好.


在urlparse上+1,但是不要使用os.path来操纵.path部分。os.path的处理必然因操作系统而异,而URI始终使用'/'作为路径部分分隔符。
唉,完全错过了那一个.自从我使用windows以来已经很久了:|.固定.

2> Mike Hamer..:

如果这是你的URL解析的范围,Python的内置rpartition将完成这项工作:

>>> URL = "http://example.com/random/folder/path.html"
>>> Segments = URL.rpartition('/')
>>> Segments[0]
'http://example.com/random/folder'
>>> Segments[2]
'path.html'

来自Pydoc,str.rpartition:

Splits the string at the last occurrence of sep, and returns a 3-tuple containing the part before the separator, the separator itself, and the part after the separator. If the separator is not found, return a 3-tuple containing two empty strings, followed by the string itself

这意味着rpartition会搜索你,并在你指定的字符的最后(最右边)出现时拆分字符串(在本例中为/).它返回一个包含以下内容的元组:

(everything to the left of char , the character itself , everything to the right of char)



3> Sebastian Di..:

我没有使用Python的经验,但是我找到了urlparse模块,它应该可以完成这项工作.



4> Paul Stephen..:

在Python中,许多操作都是使用列表完成的.Sebasian Dietz提到的urlparse模块可能很好地解决了你的具体问题,但是如果你通常对Pythonic的方法感兴趣,比如在字符串中找到斜杠,请尝试这样的事情:

url = 'http://example.com/random/folder/path.html'
# Create a list of each bit between slashes
slashparts = url.split('/')
# Now join back the first three sections 'http:', '' and 'example.com'
basename = '/'.join(slashparts[:3]) + '/'
# All except the last one
dirname = '/'.join(slashparts[:-1]) + '/'
print 'slashparts = %s' % slashparts
print 'basename = %s' % basename
print 'dirname = %s' % dirname

这个程序的输出是这样的:

slashparts = ['http:', '', 'example.com', 'random', 'folder', 'path.html']
basename = http://example.com/
dirname = http://example.com/random/folder/

有趣的位是split,join切片表示法数组[A:B](包括从末尾开始的负数),作为奖励,%字符串上的运算符给出printf样式的格式.

推荐阅读
k78283381
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有