无法连接'str'和'int'对象python

时间:2014-12-11 11:57:30

标签: python

我有这个python程序

功能:

def populate_year(self, cursor, user_id, context=None):
    year_dropdown = ''
    for y in range(2010, (datetime.datetime.now().year + 10)):
        year_dropdown = year_dropdown + '(' + y, y + '),'
    return year_dropdown

字段:

'year': fields.selection(populate_year,'Year',select=True, required=True),

我收到此错误:

TypeError: cannot concatenate 'str' and 'int' objects

3 个答案:

答案 0 :(得分:1)

您可以使用str将整数年转换为字符串,然后连接。

但是,string formatting会为您执行类型强制:

>>> '({year}, {year})'.format(year=2014)
'(2014, 2014)'

您还可以使用分隔符将字符串连接在一起:

>>> ','.join(['a', 'b', 'c'])
'a,b,c'

共:

this_year = datetime.datetime.now().year
year_dropdown = ','.join('{year}, {year}'.format(year=year)
                         for year in range(2010, this_year + 10)

答案 1 :(得分:0)

你在这一行中遇到了两个问题:

year_dropdown = year_dropdown + '(' + y, y + '),'

一个是你使用... + ... , ... + ... - 你想在那里使用加号吗?或引用,部分?

另一个是您看到错误的地方,year_dropdown是一个字符串,y是一个int。在这种情况下,您可以使用str(y)

答案 2 :(得分:0)

在for循环中使用str(y)代替y

for y in range(2010, (datetime.datetime.now().year + 10)):
                year_dropdown = year_dropdown + '(' + str(y), str(y) + '),' # use str(y)

'(' + y, y + '),'在这里,您正在整理stringint(y)

看看你在做什么 在第一次迭代y=2010

'(' + 2010, 2010 + '),'

您正在使用y汇总字符串,这是一个int值。