Конкатенация Python String и Integer

Я хочу создать строку с использованием целого числа, присоединенного к ней, в цикле for. Вот так:

for i in range(1,11):
  string="string"+i

Но он возвращает ошибку:

TypeError: unsupported operand type(s) for +: 'int' and 'str'

Каков наилучший способ объединения строк и целых чисел?

Ответ 1

Примечание:

Метод, используемый в этом ответе (backticks), устарел в более поздних версиях Python 2 и удален в Python 3. Используйте str() вместо этого.


Вы можете использовать:

string = 'string'
for i in range(11):
    string +=`i`
print string

Откроется string012345678910.

Чтобы получить string0, string1 ..... string10, вы можете использовать это как @YOU, предлагаемое

>>> string = "string"
>>> [string+`i` for i in range(11)]

Обновление согласно Python3

Вы можете использовать:

string = 'string'
for i in range(11):
    string +=str(i)
print string

Откроется string012345678910.

Чтобы получить string0, string1 ..... string10, вы можете использовать это как @YOU, предлагаемое

>>> string = "string"
>>> [string+str(i) for i in range(11)]

Ответ 2

for i in range (1,10):
    string="string"+str(i)

Чтобы получить string0, string1 ..... string10, вы можете сделать, например

>>> ["string"+str(i) for i in range(11)]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9', 'string10']

Ответ 3

string = 'string%d' % (i,)

Ответ 4

for i in range[1,10]: 
  string = "string" + str(i)

Функция str(i) преобразует целое число в строку.

Ответ 5

for i in range(11):
    string = "string{0}".format(i)

Что вы сделали (range[1,10]) -

  • a TypeError, поскольку скобки обозначают индекс (a[3]) или срез (a[3:5]) списка,
  • a SyntaxError, поскольку [1,10] недействителен, и
  • двойная ошибка за один раз, поскольку range(1,10) - [1, 2, 3, 4, 5, 6, 7, 8, 9], и вам кажется, что нужно [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

И string = "string" + i - это TypeError, поскольку вы не можете добавить целое число в строку (в отличие от JavaScript).

Посмотрите документацию на метод форматирования новой строки Python, это очень мощный.

Ответ 6

Вы можете использовать генератор для этого!

def sequence_generator(limit):  
    """ A generator to create strings of pattern -> string1,string2..stringN """
    inc  = 0
    while inc < limit:
        yield 'string'+str(inc)
        inc += 1

# to generate a generator. notice i have used () instead of []
a_generator  =  (s for s in sequence_generator(10))

# to generate a list
a_list  =  [s for s in sequence_generator(10)]

# to generate a string
a_string =  '['+", ".join(s for s in sequence_generator(10))+']'

Ответ 7

Если нам нужен вывод типа 'string0123456789', то мы можем использовать метод map function и join для строки.

>>> 'string'+"".join(map(str,xrange(10)))
'string0123456789'

Если мы хотим Список строковых значений, используйте метод list comprehension.

>>> ['string'+i for i in map(str,xrange(10))]
['string0', 'string1', 'string2', 'string3', 'string4', 'string5', 'string6', 'string7', 'string8', 'string9']

Примечание:

Используйте xrange() для Python 2.x

USe range() для Python 3.x

Ответ 8

Я сделал что-то еще. Я хотел заменить слово в списках списков, содержащих фразы. Я хотел заменить это sttring/word новым словом, которое будет соединением между строкой и числом, и что число/цифра укажет положение фразы/подсписок/списков списков.

То есть, я заменил строку строкой и добавочным числом, которое следует за ней.

    myoldlist_1=[[' myoldword'],[''],['tttt myoldword'],['jjjj ddmyoldwordd']]
        No_ofposition=[]
        mynewlist_2=[]
        for i in xrange(0,4,1):
            mynewlist_2.append([x.replace('myoldword', "%s" % i+"_mynewword") for x in myoldlist_1[i]])
            if len(mynewlist_2[i])>0:
                No_ofposition.append(i)
mynewlist_2
No_ofposition

Ответ 9

Конкатенация строки и целого числа просто: просто используйте

abhishek'+str(2)'