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」のクエリ パラメータには 1 つの値しかないと予想されるため、リストの最初の要素だけが必要なため、次のようになります。

groupid[0]

それ以外の

str(groupid)

str(groupid) は、リストの文字列表現を出力していました。

于 2014-02-25T20:46:18.393 に答える
0

Python では、(例 ['groupid_1', 'groupid_2', 3, 4]) の[]省略形です。list()

あなたのコードでは:groupid = args.get('groupid' or None).get('groupid', ...a を返すように見えますがdict().get辞書で使用されているように)、 a を返しますlist()

例えば

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

つまり: groupid = args.get('groupid')

作ります

グループ ID = [1、14、23]

そのため、呼び出しstr(groupid)が返されます"[1, 14, 23]"

呼び出しstr(groupid[1])は戻りますが14

回答を に 変更str(groupid)してくださいstr(groupid[0])

(例: [0])を使用[#]すると、リストの最初のアイテムが返されますが、[1] はリストの 2 番目のアイテムが返されます。[#] はプログラミングでindexingと呼ばれます

ターミナルでは、これをテストできます。

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