0

このコードを機能させるのに問題があります:

count_bicycleadcategory = 0
for item_bicycleadcategory in some_list_with_integers:
    exec 'model_bicycleadcategory_%s.bicycleadcategorytype = BicycleAdCategoryType.objects.get(pk=' + str(item_bicycleadcategory) + ')' % count_bicycleadcategory
    count_bicycleadcategory = count_bicycleadcategory + 1

エラーが発生します:

Type Error, not all arguments converted during string formatting

私の質問は次のとおりです。「item_bicycleadcategory」をexec式に渡す方法の手がかりはありますか?

よろしくお願いします、

4

5 に答える 5

3

すでに python のフォーマット構文を使用しています:

"string: %s\ndecimal: %d\nfloat: %f" % ("hello", 123, 23.45)

詳細はこちら: http://docs.python.org/2/library/string.html#format-string-syntax

于 2013-01-06T19:04:46.870 に答える
2

まず、execは よりもさらに危険でeval()あるため、入力が信頼できるソースからのものであることを絶対に確認してください。それでもやってはいけません。Web フレームワークなどを使用しているように見えるので、絶対に使用しないでください。

問題はこれです:

exec 'model_bicycleadcategory_%s.bicycleadcategorytype = BicycleAdCategoryType.objects.get(pk=' + str(item_bicycleadcategory) + ')' % count_bicycleadcategory

もっとよく見なさい。文字列の書式設定引数を、書式文字列を使用せずに単一の括弧に入れようとしています')' % count_bicycleadcategory

あなたはこれを行うことができます:

exec 'model_bicycleadcategory_%s.bicycleadcategorytype = BicycleAdCategoryType.objects.get(pk=' % count_bicycleadcategory + str(item_bicycleadcategory) + ')' 

しかし、あなたが本当にすべきことは、 をまったく使用exec ないことです!

モデル インスタンスのリストを作成し、代わりにそれを使用します。

于 2013-01-06T19:13:48.163 に答える
1

Python 2.7 の場合、次の形式を使用できます。

string = '{0} give me {1} beer'
string.format('Please', 3)

アウト:

ビールを3杯ください

formatたとえば、次のように、さまざまなことができます。

string = '{0} give me {1} {0} beer'

アウト:

ビールを 3 ください。

于 2013-01-06T19:10:19.480 に答える
-1

これを試して :

exec 'model_bicycleadcategory_%s.bicycleadcategorytype = BicycleAdCategoryType.objects.get(pk=%s)' % (count_bicycleadcategory, str(item_bicycleadcategory))

%s(混合と文字列+連結を同時に行ってはいけません)

于 2013-01-06T19:12:48.373 に答える
-2

これを試して:

exec 'model_bicycleadcategory_%d.bicycleadcategorytype = BicycleAdCategoryType.objects.get(pk=%d)' % (count_bicycleadcategory, item_bicycleadcategory)
于 2013-01-06T19:10:07.633 に答える