Concatenando string e número inteiro em python

136

Em python diz que você tem

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

lhe dará um erro para você escrever

print s+str(i) 

para não ter erro.

Eu acho que essa é uma maneira bastante desajeitada de lidar com a concatenação de int e string. Mesmo Java não precisa de conversão explícita para String para fazer esse tipo de concatenação. Existe uma maneira melhor de fazer esse tipo de concatenação, ou seja, sem conversão explícita no Python?

specialscope
fonte
8
É porque o Python é a linguagem do tipo Strong ( en.wikipedia.org/wiki/Strong_typing ) (algo para pesquisar no Google para entender mais :)).
Mouad
3
Isso levaria à ambiguidade. Qual seria o resultado de "1" + 1, 2ou "11"e por quê?
Amigo
1
Amigo Não sei bem o que você está pensando, mas por favor, não assuma. Meu problema era concatenar 2 tipos de objetos diferentes e encontrei a solução. Eu não sei o quanto você programou em python, mas você já tentou concatenar duas strings apenas para obter erro quando uma delas é do tipo None? Você pode fazer verificações explícitas, mas isso é apenas um pouco mais de código. Esse tipo de coisa é necessária quando você precisa registrar erros.
Specialscope
2
Apenas s+str(i), e você está correto!

Respostas:

87

Nenhuma formatação de string:

>> print 'Foo',0
Foo 0
Burhan Khalid
fonte
2
Isso funcionará bem com impressão, mas não pode ser atribuído a uma variável como uma sequência. Dá o objeto Set.
Specialscope
2
Ele também fica em branco entre os dois itens, a menos que você use a print() função v3 e defina alguns de seus parâmetros.
Levon
34

Formatação de string, usando o .format()método de novo estilo (com os padrões .format () fornece):

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

Ou o mais antigo, mas "ainda por aí", %formatando:

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

Nos dois exemplos acima, não espaço entre os dois itens concatenados. Se for necessário espaço, ele pode ser simplesmente adicionado nas seqüências de formato.

Eles fornecem muito controle e flexibilidade sobre como concatenar itens, o espaço entre eles etc. Para obter detalhes sobre especificações de formato, consulte isso .

Levon
fonte
14

O Python é uma linguagem interessante, pois embora haja geralmente uma (ou duas) maneiras "óbvias" de realizar qualquer tarefa, a flexibilidade ainda existe.

s = "string"
i = 0

print (s + repr(i))

O trecho de código acima é escrito na sintaxe Python3, mas os parênteses após a impressão sempre eram permitidos (opcional) até a versão 3 torná-los obrigatórios.

Espero que isto ajude.

Caitlin

CaitlinG
fonte
5

O método format () pode ser usado para concatenar string e número inteiro

print(s+"{}".format(i))
Aakash Wadhwa
fonte
0

se você quiser imprimir, você pode fazer isso:

print(s , i)
Daniel Jiménez
fonte
0

no python 3.6 e mais recente, você pode formatá-lo assim:

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

ou apenas:

print(f'{s} {i}')
Kasra Najafi
fonte