1

このような基本的な質問をしなければならないのは嫌いですが、分割メソッドを Python で動作させることができないようです。

私は辞書を持っています。印刷すると、次のようになります。

data_dict = <QueryDict: {u'ids': [u'1012,738'], u'ct': [u'9']}>

次のように、「ids」リストから id オブジェクトの配列を作成したいと考えています。

ids = [1012, 738]

リスト「ids」は実際にはカンマで区切られた単なるIDの文字列であるように見えるので、試しました:

id_string = data_dict['ids']
ids = id_string.split(',')
for id in ids:
    print(id)

何も印刷されません。次に、おそらく u' は文字列ではないことを意味し、最初に文字列に変換して分割して機能させる必要があると考えたので、試しました:

id_string = data_dict['ids']
id_string = str(id_string)
ids = id_string.split(',')
for id in ids:
    print(id)

何も印刷されません。私が間違っているのかわかりません。

4

2 に答える 2

2

data_dict['ids']実際には文字列を含むリストのようです。だから試してみてくださいid_string = data_dict['ids'][0]

Au'foo'は Unicode 文字列です。通常の文字列メソッドがすべて含まれている必要があります。

また、Django を使用してコードを実行している場合python manage.py runserver(本番環境で実行していない場合)、import pdb; pdb.set_trace()コードに挿入することができます。次に、ページをロードすると、サーバー出力に pdb プロンプトが含​​まれます。これを使用して、Python シェルと同じように実験できます。

この方法で PDB を使い始める場合の注意点: PDB には、Python コードよりも優先される 1 文字のコマンドやその他のものがあります。を使用!して、PDB が Python のようにコードを実行することを確認できます。例えば:

(Pdb) list(range(3))
*** Error in argument: '(range(3))'

listPDB には、ソース コードを表示するために使用できる独自のコマンドがあります。

(Pdb) !list(range(3))
[0, 1, 2]

firstを使用すること!で、コマンドは Python のように適切に処理されます。

于 2013-06-21T16:14:49.800 に答える
1

[u'1012,738']id_string = data_dict['ids'][0]はリストなので、そのリストから最初の要素を取得するために使用する必要があります。

その文字列の項目を整数のリストに変換するには、または次のいずれmapかを使用しlist comprehensionます。

#map
map(int, data_dict['ids'][0].split(','))

#LC
[int(x) for x in data_dict['ids'][0].split(',')]

デモ:

>>> strs = '1012,738'
>>> map(int, strs.split(','))
[1012, 738]
>>> [int(x) for x in  strs.split(',')]
[1012, 738]
于 2013-06-21T16:10:59.407 に答える