Concatenare stringa e numero intero in Python


136

In Python dire che hai

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

ti darà errore così scrivi

print s+str(i) 

per non ottenere errori.

Penso che questo sia un modo piuttosto goffo per gestire int e concatenazione di stringhe. Persino Java non ha bisogno del cast esplicito su String per eseguire questo tipo di concatenazione. C'è un modo migliore per fare questo tipo di concatenazione, cioè senza esplicito casting in Python?


8
È perché Python è un linguaggio tipizzato in modo forte ( en.wikipedia.org/wiki/Strong_typing ) (qualcosa su Google per capire di più :)).
mouad,

3
Porterebbe all'ambiguità. Quale sarebbe il risultato di "1" + 1, 2o "11"e perché?
Buddy,

1
Amico, non sono sicuro di quello che stai pensando, ma per favore non dare per scontato. Il mio problema era concatenare 2 diversi tipi di oggetti e ho trovato la soluzione. Non so quanto hai programmato in Python ma hai mai provato a concatenare due stringhe solo per ottenere errori quando uno di essi è di tipo Nessuno? Puoi fare controlli espliciti, ma questo è solo un po 'di codice in più. Questo genere di cose è richiesto quando è necessario registrare gli errori.
specialscope,

2
Solo s+str(i), e hai ragione!

Risposte:



87

Nessuna formattazione di stringa:

>> print 'Foo',0
Foo 0

2
Funzionerà bene con la stampa ma non può essere assegnato a una variabile come stringa. Dà l'oggetto Set.
specialscope

2
Si inserisce anche in uno spazio aggiuntivo tra i due elementi, a meno che non si usi la print() funzione v3 e si impostino alcuni dei suoi parametri.
Levon,

34

Formattazione delle stringhe, utilizzando il .format()metodo new-style (con le impostazioni predefinite .format () fornisce):

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

O il più vecchio, ma "ancora in giro", %formattando:

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

In entrambi gli esempi sopra non c'è spazio tra i due elementi concatenati. Se è necessario spazio, può essere semplicemente aggiunto nelle stringhe di formato.

Questi forniscono un sacco di controllo e flessibilità su come concatenare gli articoli, lo spazio tra loro ecc. Per i dettagli sulle specifiche del formato vedere questo .


14

Python è un linguaggio interessante in quanto mentre di solito ci sono uno (o due) modi "ovvi" per eseguire un determinato compito, la flessibilità esiste ancora.

s = "string"
i = 0

print (s + repr(i))

Lo snippet di codice sopra è scritto nella sintassi di Python3 ma le parentesi dopo la stampa sono sempre state consentite (opzionale) fino a quando la versione 3 li ha resi obbligatori.

Spero che questo ti aiuti.

Caitlin


5

Il metodo format () può essere utilizzato per concatenare stringa e numero intero

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


0

in Python 3.6 e versioni successive, puoi formattarlo in questo modo:

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

o semplicemente:

print(f'{s} {i}')
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.