Python non tutti gli argomenti convertiti durante la formattazione della stringa

Python non tutti gli argomenti convertiti durante la formattazione della stringa

La formattazione della stringa è la tecnica per creare/creare una stringa sostituendo i segnaposto in una stringa con valori. Durante l'esecuzione di operazioni su stringhe, si verificano vari errori in Python. Il messaggio di errore "Non tutti gli argomenti convertiti durante la formattazione della stringa"Appare mentre si tenta di formattare le stringhe fornite usando la sintassi inappropriata o usando l'operatore Modulo"%"Con stringhe e numeri.

In questo blog di Python, esploreremo diverse cause e soluzioni all'errore specificato dato. Cominciamo con i seguenti contenuti:

    • Quali sono le cause di questo errore?
    • Soluzioni per correggere questo errore

Quali sono le cause dell'errore "non tutti gli argomenti convertiti durante la formattazione della stringa" Errore?

L'errore discusso può verificarsi per diversi motivi, incluso i seguenti:

Causa 1: utilizzando una sintassi errata

Questo errore può verificarsi quando la sintassi errata dell'operatore di modulo "%"Viene utilizzato per invocare e aggiungere i valori inizializzati. Diamo un'occhiata all'esempio seguente:

name = "Joseph"
età = 23
output = "Il mio nome è e ho anni"%(nome, età)
Stampa (output)


Nel codice sopra, la sintassi errata dell'operatore di modulo "%"Viene utilizzato per posizionare il valore di"nome" E "età"All'interno della stringa senza utilizzare i segnaposto appropriati, i.e., "%S" E "%D" eccetera. Contro i tipi di dati.

Produzione


Di conseguenza, la limitazione dichiarata viene affrontata a causa dei segnaposto mancanti rispetto ai valori invocati.

Causa 2: utilizzando l'operatore Modulo "%" con intero e stringa

L'altra causa di questo errore può essere utilizzando l'operatore discusso con intero e stringa. Ad esempio, diamo un'occhiata al codice di esempio seguente:

name = "45"
età = 23
output = nome % età
Stampa (output)


Nel frammento di codice sopra, l'operatore modulo "%"È posizionato tra la variabile stringa"nome"E variabile interi"età"Per restituire il resto corrispondente.

Produzione


Poiché entrambi i valori comprendono tipi di dati contrastanti, il calcolo non può essere eseguito e quindi l'errore dichiarato viene affrontato.

Soluzioni per correggere l'errore "non tutti gli argomenti convertiti durante la formattazione della stringa"

Di seguito sono riportate alcune soluzioni per correggere la limitazione dichiarata in Python:

Soluzione 1: correggere la sintassi posizionando i segnaposto appropriati

Per correggere questo errore, dobbiamo invocare i valori della stringa iniziali posizionando il segnaposto corrispondente, i.e., "%S", come segue:

name = "John"
Age = "30"
output = "Il mio nome è %s e ho %s years" %(nome, età)
Stampa (output)


Nel codice sopra, il segnaposto "%S"Viene usato al posto delle parentesi graffe""Per invocare i valori della stringa inizializzati in modo appropriato.

Produzione


Come visto, i valori di stringa inizializzati sono accessibili e aggiunti di conseguenza.

Soluzione 2: utilizzando il metodo "Format ()"

IL "formato()"Formati del metodo il valore dato/specificato in base allo specificatore del formato. Questo metodo può anche essere utilizzato per formattare direttamente i valori invocati senza utilizzare i segnaposto.

Sintassi

Formato (val, formato)


Nella sintassi sopra:

    • "Val"Corrisponde al valore che deve essere formattato.
    • "formato"Si riferisce alla specifica di come il valore dovrebbe essere formattato.

Esempio

Proviamo il seguente codice:

name = "John"
Age = "30"
output = "Il mio nome è e ho anni".Formato (nome, età)
Stampa (output)


Nel blocco di codice sopra, il "formato()"Il metodo viene utilizzato per contenere i valori della stringa invocati come argomenti, restituendo e aggiungendo i valori in modo appropriato.

Produzione


Questo output implica che i valori della stringa vengono recuperati in modo appropriato.

Soluzione 3: lanciare il tipo di dati

L'errore può anche essere risolto convertendo il "corda" A "int Datatype tramite il casting, come segue:

name = "45"
età = 23
output = int (nome) % età
Stampa (output)


Nel codice sopra, il valore della stringa inizializzato viene lanciato a "int"E poi l'operatore di modulo"%"Viene applicato tra il numero predefinito e l'intero cast per recuperare il resto corrispondente.

Produzione


Come visto, il resto è recuperato in modo appropriato io.e., 45/23 = "22".

Conclusione

IL "Non tutti gli argomenti convertiti durante la formattazione della stringa"L'errore può essere risolto correggendo la sintassi dell'operatore di modulo"%"Tramite il posizionamento di segnapunti appropriati o utilizzando il"formato()"Metodo invece dell'operatore % o convertire il"corda" in "int"Tramite lanciare il tipo di dati. Questa guida Python ha discusso di molteplici ragioni e soluzioni per risolvere la limitazione discussa.