Concatenación de cadenas y enteros en python


136

En python di que tienes

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

te dará un error para que escribas

print s+str(i) 

para no obtener el error

Creo que esta es una manera bastante torpe de manejar la concatenación int y string. Incluso Java no necesita una conversión explícita a String para hacer este tipo de concatenación. ¿Hay una mejor manera de hacer este tipo de concatenación, es decir, sin una conversión explícita en Python?


8
Esto se debe a que Python es un lenguaje de tipo Strong ( en.wikipedia.org/wiki/Strong_typing ) (algo para buscar en Google para comprender más :)).
mouad

3
Conduciría a la ambigüedad. ¿Cuál sería el resultado de "1" + 1, 2o "11"y por qué?
Amigo

1
Amigo, no estoy seguro de lo que estás pensando, pero no lo asumas. Mi problema era concatenar 2 tipos de objetos diferentes y encontré la solución. No sé cuánto ha programado en Python, pero ¿alguna vez ha tratado de concatenar dos cadenas solo para obtener un error cuando una de ellas es de tipo Ninguno? Puede hacer comprobaciones explícitas, pero eso es solo un poco más de código. Este tipo de cosas son necesarias cuando necesita registrar errores.
specialscope

2
Justo s+str(i), y tienes razón!

Respuestas:



87

Sin formato de cadena:

>> print 'Foo',0
Foo 0

2
Esto funcionará bien con la impresión, pero no se puede asignar a una variable como una cadena. Da el objeto Set.
specialscope

2
También se queda en un espacio en blanco adicional entre los dos elementos, a menos que use la print() función v3 y establezca algunos de sus parámetros.
Levon

34

Formateo de cadenas, utilizando el .format()método de nuevo estilo (con los valores predeterminados .format () proporciona):

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

O el más antiguo, pero "todavía se %queda ", con formato:

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

En los dos ejemplos anteriores no hay espacio entre los dos elementos concatenados. Si se necesita espacio, simplemente se puede agregar en las cadenas de formato.

Estos proporcionan un gran control y flexibilidad sobre cómo concatenar elementos, el espacio entre ellos, etc. Para obtener detalles sobre las especificaciones de formato, consulte esto .


14

Python es un lenguaje interesante en el sentido de que, aunque generalmente hay una (o dos) formas "obvias" de realizar cualquier tarea, aún existe flexibilidad.

s = "string"
i = 0

print (s + repr(i))

El fragmento de código anterior está escrito en sintaxis de Python3, pero los paréntesis después de la impresión siempre se permitieron (opcional) hasta que la versión 3 los hizo obligatorios.

Espero que esto ayude.

Caitlin


5

El método format () se puede utilizar para concatenar cadenas y enteros

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


0

en Python 3.6 y posteriores, puede formatearlo así:

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

o solo:

print(f'{s} {i}')
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.