Python - 如何在Python中连接字符串和整数?

时间:2013-01-06 19:00:01

标签: python

我在使用此代码时遇到了一些麻烦:

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表达式的任何线索?

最诚挚的问候,

5 个答案:

答案 0 :(得分:3)

您已经在使用python的格式语法:

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

此处有更多信息:http://docs.python.org/2/library/string.html#format-string-syntax

答案 1 :(得分:2)

首先,execeval()更危险,因此绝对确保您的输入来自可靠来源。即使这样,你也不应该这样做。看起来你正在使用一个Web框架或类似的东西,所以真的不这样做!

问题在于:

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

仔细看看。您正在尝试将字符串格式化参数放在单个parentesis中,而不使用')' % count_bicycleadcategory的格式字符串。

你可以这样做:

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

但你真正应该做的就是不使用exec

创建模型实例列表并改为使用它。

答案 2 :(得分:1)

对于python 2.7,你可以使用格式:

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

出:

  

请给我3杯啤酒

你可以用format做很多事情,例如:

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

出:

  

请给我3请啤酒。

答案 3 :(得分:-1)

试试这个:

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

(你不能同时混合%s和字符串+连接)

答案 4 :(得分:-2)

试试这个:

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