Come posso restituire argomento stringa senza parentesi e citazioni in Python
Domanda
Sono molto nuovo a Python e così sto lottando con ciò che probabilmente è molto semplice per un programmatore Python stagionato.
Il problema qui sotto è che quando l'argomento Gruppo è fornito con un valore, viene valutato a ["GroupID"].
Qualcuno può spiegare come concatenare la stringa in modo che abbia semplicemente il valore Gruppoid senza le staffe quadre e le citazioni dei single?
Molte grazie,
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()
. Soluzione
urlparrse.parse_qs restituisce sempre un dizionario di elenchi, poiché un nome di parametro potrebbe essere ripetuto nella stringa di query e la restituzione di un elenco ti consentirà di vedere più valori del parametro.Dal momento che presumibilmente si aspetta solo un valore per il tuo parametro della query di "GroupID", vuoi solo il primo elemento dell'elenco, quindi:
groupid[0]
.
invece di
str(groupid)
.
str (Groupid) stava stampando una rappresentazione di stringa dell'elenco.
Altri suggerimenti
In Python, []
è la stenografia per list()
(ad esempio "[GruppoD_1", 'GroupID_2', 3, 4])
Quindi nel tuo codice: groupid = args.get('groupid' or None)
Il .get('groupid', ...
sembra restituire un dict()
(poiché .get
viene utilizzato su Dicts), ma restituisce un list()
.
E.G.
args = {
'groupid': [1, 14, 23]
...
}
.
Allora: GroupID= args.get ('GroupID')
fa
GroupID= [1, 14, 23]
Quindi chiamare str(groupid)
restituisce "[1, 14, 23]"
considerando che chiamando str(groupid[1])
restituisce 14
Risposta
Cambia il tuo str(groupid)
in str(groupid[0])
.
Usando [#]
(ad esempio [0]), sta dicendo, restituisce il primo elemento nell'elenco, mentre [1], afferma il secondo elemento nell'elenco.[#] Nella programmazione è chiamata index
ing
In terminale, puoi provarlo:
>>> groupid = ['asd']
>>> groupid
['asd']
>>> str(groupid)
"['asd']"
>>> str(groupid[0])
'asd'
>>>
.