我对Python非常陌生,所以我很擅长对经验丰富的Python程序员非常简单。
下面的问题是,当groupid参数提供了一个值时,它被评估为['groupid']。
有人可以解释我如何连接字符串,以便它只是没有方括号和单引号的groupid值?
非常感谢,
import sys
import xbmcgui
import xbmcplugin
import urllib
import urlparse
import xbmc, xbmcaddon, xbmcvfs, simplejson, urllib2
base_url = sys.argv[0]
addon_handle = int(sys.argv[1])
args = urlparse.parse_qs(sys.argv[2][1:])
xbmcplugin.setContent(addon_handle, 'movies')
def build_url(query):
return base_url + '?' + urllib.urlencode(query)
mode = args.get('mode', None)
groupid = args.get('groupid', None)
if (groupid is None):
testurl = 'hxxp://webserver.com/json.php'
else:
testurl = 'hxxp://webserver.com/json.php?group=' + str(groupid)
req = urllib2.urlopen(testurl)
response = req.read()
req.close()
答案 0 :(得分:2)
urlparse.parse_qs始终返回列表字典,因为参数名称可以在查询字符串中重复,返回列表将允许您查看参数的多个值。由于您可能只希望查询参数“groupid”只有一个值,因此您只需要列表的第一个元素,因此:
groupid[0]
而不是
str(groupid)
str(groupid)正在打印列表的字符串表示。
答案 1 :(得分:0)
在Python中,[]
是list()
的简写(例如['groupid_1','groupid_2',3,4])
因此,在您的代码中:groupid = args.get('groupid' or None)
.get('groupid', ...
似乎返回dict()
(因为.get
用于dicts),但返回list()
。
E.g。
args = {
'groupid': [1, 14, 23]
...
}
所以: groupid = args.get('groupid')
品牌
groupid = [1,14,23]
因此,调用str(groupid)
会返回"[1, 14, 23]"
而调用str(groupid[1])
会返回14
<强> ANSWER 强>
将您的str(groupid)
更改为str(groupid[0])
。
使用[#]
(例如[0]),说,返回列表中的第一项,而[1],表示返回列表中的第二项。编程中的[#]称为index
ing
在终端中,你可以测试一下:
>>> groupid = ['asd']
>>> groupid
['asd']
>>> str(groupid)
"['asd']"
>>> str(groupid[0])
'asd'
>>>