2014-02-25 40 views
0

我對Python非常陌生,所以我正在爲經驗豐富的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

urlparse.parse_qs總是返回列表的字典,因爲參數名稱可以在查詢字符串重複並返回一個列表將讓你看到的參數的多個值。因爲你可能期待的「GROUPID」查詢參數只有一個值,你只想列表的第一個元素,因此:

groupid[0] 

代替

str(groupid) 

STR(組識別)是印刷列表的字符串表示。

+0

完善和充分理解。非常非常感謝你。 –

0

在Python,[]是簡寫list()(例如,[ 'groupid_1', 'groupid_2',3,4])

在代碼

所以:groupid = args.get('groupid' or None).get('groupid', ...似乎返回一個dict()(如.get使用在字典上),但返回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

答案 將您的str(groupid)更改爲str(groupid[0])

使用[#](例如[0])表示返回列表中的第一項,而[1]表示返回列表中的第二項。 [#]的節目中被稱爲index荷蘭國際集團

在終端,你可以測試了這一點:

>>> groupid = ['asd'] 
>>> groupid 
['asd'] 
>>> str(groupid) 
"['asd']" 
>>> str(groupid[0]) 
'asd' 
>>> 
相關問題