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

136

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

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

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

print s+str(i) 

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

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

specialscope
источник
8
Это потому, что Python является языком со строгой типизацией ( en.wikipedia.org/wiki/Strong_typing ) (что-то, что нужно Google, чтобы понять больше :)).
Муад
3
Это привело бы к двусмысленности. Что будет результатом "1" + 1, 2или "11"и почему?
Бадди
1
Дружище, я не уверен, о чем ты думаешь, но, пожалуйста, не предполагай Моя проблема заключалась в объединении двух разных типов объектов, и я нашел решение. Я не знаю, сколько вы программировали на python, но пытались ли вы когда-нибудь объединить две строки только для того, чтобы получить ошибку, когда одна из них имеет тип None? Вы можете делать явные проверки, но это всего лишь дополнительный фрагмент кода. Такие вещи требуются, когда вам нужно регистрировать ошибки.
спец.
2
Просто s+str(i)и ты прав!

Ответы:

174

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

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

источник
5
Просто для потомков, так как вещи изменились в прошлом и, вероятно, изменятся в будущем: это «современный», с какой версией?
jvriesem
87

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

>> print 'Foo',0
Foo 0
Бурхан Халид
источник
2
Это будет хорошо работать с печатью, но не может быть присвоено переменной в виде строки. Это дает Set объект.
спецоскоп
2
Он также вставляет дополнительный пробел между двумя элементами, если вы не используете print() функцию v3 и не устанавливаете некоторые из ее параметров.
Левон
34

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

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

Или старшего, но «все еще торчащего», - %форматирующего

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

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

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

Левон
источник
14

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

s = "string"
i = 0

print (s + repr(i))

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

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

Кейтлин

CaitlinG
источник
5

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

print(s+"{}".format(i))
Аакаш Вадхва
источник
0

если вы только хотите напечатать, вы можете сделать это:

print(s , i)
Даниэль Хименес
источник
0

в Python 3.6 и новее вы можете отформатировать его так:

new_string = f'{s} {i}'
print(new_string)

или просто:

print(f'{s} {i}')
Касра Наджафи
источник