
%s er en argumentspesifikasjoner og brukes til strengformatering. Den låner syntaksen fra C-språket. Enkelt sagt lar den deg legge til en verdi i en streng.
Verdien kan være en streng eller et hvilket som helst objekt som kan konverteres til en streng, for eksempel tall, liste osv.
Alle strengverdier
Tenk på følgende eksempel.
name = input("Please insert your name: ") song = input("What is your favorite song? " ) print("Hello %s! Would you like to listen to %s?" %(name, song))
I eksemplet ovenfor tar vi navnet og favorittsangen fra brukeren og viser en melding med disse verdiene.
Dessuten setter vi %s som plassholder på de stedene der du vil ha verdier av variabler.
En tuppel som inneholder verdier følger formatstrengen, dvs. %(navn, sang) . Husk å sette inn verdier i samme rekkefølge som du vil vise dem. I dette tilfellet Navn vil komme først og deretter sang .
En prøveutgang av eksemplet ovenfor er gitt nedenfor.
Please insert your name: ashton What is your favorite song? Perfect Hello ashton! Would you like to listen to Perfect?
Som du kan se, fungerer dette som forventet.
En enkelt verdi
Hvis vi bare har en singel %s , så kan vi skrive en verdi uten tuppel. La oss se.
name = input("Please insert your name: ") print("Hello %s!" % name)
Produksjon
Please insert your name: Agar Hello Agar!
Objekter med en strengrepresentasjon
Som allerede nevnt, kan en verdi være et hvilket som helst objekt som kan konverteres til en streng. La oss ta et eksempel.
name = "Smith" score = [70, 80, 90, 100] print("The score of %s in the last four matches: %s" % (name, score))
Produksjon
The score of Smith in the last four matches: [70, 80, 90, 100]
Som du kan se, plasserer vi en streng og en liste ved å bruke %s argumentspesifikasjoner. Den konverterer listen til en streng automatisk.
La oss ta det samme eksemplet og gjøre det ved å bruke sammenkoblingsoperatoren.
name = "Smith" score = [70, 80, 90, 100] print("The score of " + name + " in the last four matches " + str(score))
Produksjon
The score of Smith in the last four matches [70, 80, 90, 100]
Her, i motsetning til %s, konverterer vi eksplisitt listen til en streng og bruker + på hvert sted vi ønsker å tilføre en verdi.
TypeError
Dessuten må antall argumentspesifikasjoner være det samme som antall verdier i tuppelen. Hvis de ikke er det, får du en feilmelding. La oss se.
name = input("Please insert your name: ") song = input("What is your favorite song? " ) print("Hello %s! Would you like to listen to %s?" %(name))
Produksjon

Hva betyr %s i Python
Som du kan se i utgangen ovenfor, kaster programmet en TypeError .
Kartleggingsnøkkel
I stedet for å huske rekkefølgen du vil sette inn verdier i, kan du sende en kartleggingsnøkkel til %s . Tenk på følgende eksempel for å forstå dette konseptet.
name = "Ashton Agar" age = 20 print("My name is %(name)s and my age is %(age)s." %{"age":age, "name":name})
Produksjon
My name is Ashton Agar and my age is 20.
I eksemplet ovenfor sender vi en ordbok som inneholder (nøkkel, verdi) par i stedet for en tuppel. Dessuten er nøkkelen plassert mellom % og s , som blir erstattet av verdien senere. Derfor trenger vi ikke huske rekkefølgen.
%s er en gammel metode for formatering av strenger. Bedre teknikker som f.eks format() og f-strenger har blitt introdusert som er enklere å bruke og gir flere funksjoner.