Конкатенация строки и целого числа в python

В python говорится, что у вас есть

s = "string"
i = 0
print s+i

даст вам ошибку поэтому вы пишете

print s+str(i) 

чтобы не получить ошибку.

Я думаю, что это довольно неуклюжий способ обработки int и конкатенации строк. Даже Java не нуждается в явном литье в String для этого типа конкатенации. Есть ли лучший способ сделать такую ​​конкатенацию без явного каста в Python?

Ответ 1

Современное форматирование строк:

"{} and {}".format("string", 1)

Ответ 2

Нет форматирования строк:

>> print 'Foo',0
Foo 0

Ответ 3

Форматирование строк, используя метод .format() нового стиля (с настройками по умолчанию . format()):

 '{}{}'.format(s, i)

Или более старый, но "все еще придерживающийся", % -formatting:

 '%s%d' %(s, i)

В обоих вышеприведенных примерах нет места между двумя конкатенированными элементами. Если пространство необходимо, его можно просто добавить в строки формата.

Они обеспечивают большой контроль и гибкость в отношении того, как конкатенировать элементы, пространство между ними и т.д. Подробнее о формате см. это.

Ответ 4

Python - интересный язык в том смысле, что, хотя обычно существует один (или два) "очевидных" способа выполнения любой заданной задачи, гибкость все еще существует.

s = "string"
i = 0

print (s + repr(i))

Вышеприведенный фрагмент кода написан в синтаксисе Python3, но круглые скобки после печати всегда разрешены (необязательно) до тех пор, пока версия 3 не сделает их обязательными.

Надеюсь, что это поможет.

Кейтлин

Ответ 5

Метод format() может использоваться для объединения строк и целых чисел

print(s+"{}".format(i))