Strengformatering er teknikken for å lage/lage en streng ved å erstatte plassholdere i en streng med verdier. Mens du utfører operasjoner på strenger, oppstår forskjellige feil i Python. Feilmeldingen “Ikke alle argumenter konvertert under strengformatering”Vises mens du prøver å formatere de gitte strengene ved å bruke den upassende syntaksen, eller ved å bruke modulo -operatøren”%”Med strenger og tall.
I denne Python -bloggen vil vi utforske forskjellige årsaker og løsninger på den gitte spesifiserte feilen. La oss starte med følgende innhold:
Hva er årsakene til feilen "ikke alle argumenter som er konvertert under strengformatering" -feil?
Den diskuterte feilen kan oppstå på grunn av flere årsaker, inkludert følgende:
Årsak 1: Bruke feil syntaks
Denne feilen kan oppstå når feil syntaks for modulooperatøren “%”Brukes til å påkalle og legge til de initialiserte verdiene. La oss se på eksemplet nedenfor:
name = "Joseph"
Alder = 23
output = "Mitt navn er og jeg er år gammel"%(navn, alder)
Print (Output)
I koden ovenfor, den feil syntaks for modulo -operatøren “%”Brukes til å plassere verdien av“Navn”Og“alder”Inne i strengen uten å bruke passende plassholdere, jeg.e., “%s”Og“%d" etc. mot datatypene.
Produksjon
Som et resultat blir den uttalte begrensningen møtt på grunn av de savnede plassholderne mot de påkalte verdiene.
Årsak 2: Bruke modulooperatør “%” med heltall og streng
Den andre årsaken til denne feilen kan være ved å bruke den diskuterte operatøren med heltall og streng. La oss for eksempel se på eksemplet nedenfor:
name = "45"
Alder = 23
utgang = navn % alder
Print (Output)
I ovennevnte kodebit, Modulo -operatøren “%”Er plassert mellom strengvariabelen“Navn”Og heltallvariabel”alder”For å returnere den tilsvarende resten.
Produksjon
Siden begge verdiene omfatter motstridende datatyper, kan ikke beregningen utføres, og den uttalte feilen blir møtt.
Løsninger for å fikse feilen “Ikke alle argumenter som er konvertert under strengformatering” -feil
Følgende er noen løsninger for å fikse den uttalte begrensningen i Python:
Løsning 1: Rett syntaksen ved å plassere passende plassholdere
For å fikse denne feilen, må vi påkalle de initialisere strengverdiene ved å plassere den tilsvarende plassholderen, i.e., “%s", følgende:
Navn = "John"
alder = "30"
output = "Mitt navn er %s og jeg er %s år gammel" %(navn, alder)
Print (Output)
I koden ovenfor, plassholderen “%s”Brukes i stedet for de krøllete seler””For å påkalle de initialiserte strengverdiene på riktig måte.
Produksjon
Som sett er de initialiserte strengverdiene tilgang til og vedlagt deretter.
Løsning 2: Bruke metoden “Format ()”
“format()”Metodeformat den gitte/spesifiserte verdien i henhold til formatspesifikasjonen. Denne metoden kan også brukes til å formatere de påkalte verdiene direkte uten å bruke plassholdere.
Syntaks
Format (val, format)
I syntaks ovenfor:
Eksempel
La oss oversikt Følgende kode:
Navn = "John"
alder = "30"
output = "Mitt navn er og jeg er år gammel".Format (navn, alder)
Print (Output)
I kodeblokken ovenfor, "format()”Metoden brukes til å inneholde de påkalte strengverdiene som argumenter, og dermed returnerer og legger til verdiene på riktig måte.
Produksjon
Denne utgangen innebærer at strengverdiene blir hentet på riktig måte.
Løsning 3: Støping av datatypen
Feilen kan også løses ved å konvertere "streng" til "int Datatype via støping, som følger:
name = "45"
Alder = 23
utgang = int (navn) % alder
Print (Output)
I koden ovenfor er den initialiserte strengverdien støpt til “int”Og så modulo -operatøren”%”Brukes mellom standard og støpt heltall for å hente den tilsvarende resten.
Produksjon
Som sett blir resten hentet på riktig måte jeg.e., 45/23 = “22”.
Konklusjon
“Ikke alle argumenter konvertert under strengformatering”Feil kan løses ved å korrigere syntaksen til modulo -operatøren”%”Via plassering av passende plassholdere, eller bruke“format()”Metode i stedet for % operatør, eller konvertere“streng”Inn i“int”Via Casting the Datatype. Denne Python -guiden diskuterte flere årsaker og løsninger for å løse den diskuterte begrensningen.