我正在尝试编写一个小脚本,将url作为输入并解析它。
以下是我的剧本
#! /usr/bin/env python
import sys
from urlparse import urlsplit
url = sys.argv[1]
parseUrl = urlsplit(url)
print 'scheme :', parseUrl.scheme
print 'netloc :', parseUrl.netloc
但是当我用./myscript http://www.example.com
显示以下错误。
AttributeError: 'tuple' object has no attribute 'scheme'
我是python/scripting
的新手,我在哪里做错了?
编辑:我使用的Python版本是Python 2.7.5
答案 0 :(得分:0)
你不想要计划。相反,在这种情况下,您希望访问元组的0
索引和元组的1
索引。
print 'scheme :', parseUrl[0]
print 'netloc :', parseUrl[1]
urlparse
使用.scheme
和.netloc
表示法,urlsplit
instead uses a tuple (refer to the appropriate index number):
这与urlparse()类似,但不会从中分割出params URL。如果更多,通常应该使用它而不是urlparse() 最近的URL语法允许将参数应用于每个段 需要URL的路径部分(请参阅RFC 2396)。独立 需要函数来分隔路径段和参数。这个 函数返回一个5元组:(寻址方案,网络位置, 路径,查询,片段标识符)。
返回值实际上是元组子类的一个实例。这个 class具有以下附加的只读便利属性:
Attribute Index Value Value if not present scheme 0 URL scheme specifier empty string netloc 1 Network location part empty string path 2 Hierarchical path empty string query 3 Query component empty string fragment 4 Fragment identifier empty string username User name None password Password None hostname Host name (lower case) None port Port number as integer, if present None
答案 1 :(得分:0)
查看文档,听起来您使用的是Python 2.4,它没有添加属性。另一个回答错过了文档中的关键位:
2.2版中的新功能。
在版本2.5中更改:添加了返回值的属性。
您必须通过索引或解压缩访问元组部分:
scheme, netloc, path, query, fragment = urlsplit(url)
但是,您应该真正升级到Python 2.7。不再支持Python 2.4。