>> s = urlparse.urlsplit(url) >>> print-6ren">
gpt4 book ai didi

python - 如何迭代 urlparse.urlsplit() 结果 Python

转载 作者:太空狗 更新时间:2023-10-30 02:12:53 35 4
gpt4 key购买 nike

假设我有这段代码:

>>> import urlparse
>>> url = "http://google.com"
>>> s = urlparse.urlsplit(url)
>>> print s
SplitResult(scheme='http', netloc='google.com', path='', query='', fragment='')
>>> print 'scheme ',s.scheme
scheme http
>>> print 'netloc ',s.netloc
netloc google.com

如您所见,我可以手动遍历项目,但如何自动执行此操作?我想做这样的事情:

# This doesn't work:
for k,v in s.items():
print '%s : %s'%(k,v)

最佳答案

你可以使用内部的 _asdict 方法:

>>> import urlparse
>>> url = "http://google.com"
>>> s = urlparse.urlsplit(url)
>>> s
SplitResult(scheme='http', netloc='google.com', path='', query='', fragment='')
>>> s._asdict()
OrderedDict([('scheme', 'http'), ('netloc', 'google.com'), ('path', ''), ('query', ''), ('fragment', '')])
>>> d = s._asdict()
>>> for k,v in d.items():
... print k, repr(v)
...
scheme 'http'
netloc 'google.com'
path ''
query ''
fragment ''

为了澄清评论中提出的一点,尽管前缀 _ 通常表示方法不是公共(public)接口(interface)的一部分,但该方法是公共(public)方法。它被赋予前缀以避免名称冲突,正如 namedtuple 文档解释的那样 [link] :

To prevent conflicts with field names, the method and attribute names start with an underscore.

而在 Python 3 中,由于实现的改变,这要容易得多:

>>> vars(urllib.parse.urlsplit("http://www.google.ca"))
OrderedDict([('scheme', 'http'), ('netloc', 'www.google.ca'), ('path', ''), ('query', ''), ('fragment', '')])

关于python - 如何迭代 urlparse.urlsplit() 结果 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12845161/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com