0

我对 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()
4

2 回答 2

2

urlparse.parse_qs 总是返回一个列表字典,因为参数名称可以在查询字符串中重复,并且返回一个列表将允许您查看参数的多个值。由于您可能只希望“groupid”的查询参数只有一个值,因此您只需要列表的第一个元素,因此:

groupid[0]

代替

str(groupid)

str(groupid) 正在打印列表的字符串表示形式。

于 2014-02-25T20:46:18.393 回答
0

在 Python 中,[]list()(例如 ['groupid_1', 'groupid_2', 3, 4]) 的简写

因此,在您的代码中:groupid = args.get('groupid' or None)the.get('groupid', ...似乎返回 a dict()(如.get在 dicts 上使用的那样),但返回 a list()

例如

args = {
    'groupid': [1, 14, 23]
    ...
}

所以: groupid = args.get('groupid')

使

groupid = [1, 14, 23]

所以调用str(groupid)返回"[1, 14, 23]"

而调用str(groupid[1])返回14

答案 将您更改str(groupid)str(groupid[0]).

使用[#](例如 [0])表示返回列表中的第一项,而 [1] 表示返回列表中的第二项。[#] 在编程中被称为indexing

在终端中,您可以对此进行测试:

>>> groupid = ['asd']
>>> groupid
['asd']
>>> str(groupid)
"['asd']"
>>> str(groupid[0])
'asd'
>>> 
于 2014-02-25T20:49:59.947 回答