如何在Python中返回没有括号和引号的字符串参数

时间:2014-02-25 20:39:56

标签: python xbmc

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

2 个答案:

答案 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'
>>>