Strängformat i Python

Slutförd

Förutom att transformera text och utföra grundläggande åtgärder, till exempel matchning och sökning, är det viktigt att formatera texten när du presenterar information. Det enklaste sättet att presentera textinformation med Python är att använda print() funktionen. Det är viktigt att få information i variabler och andra datastrukturer till strängar som print() kan användas.

I den här lektionen får du lära dig flera giltiga sätt att inkludera variabelvärden i text med hjälp av Python.

Formatering av procenttecken (%)

Platshållaren för variabeln i strängen är %s. Efter strängen använder du ett annat % tecken följt av variabelnamnet. I följande exempel visas hur du formaterar med hjälp % av tecknet:

mass_percentage = "1/6"
print("On the Moon, you would weigh about %s of your weight on Earth." % mass_percentage)

Produktionen: On the Moon, you would weigh about 1/6 of your weight on Earth.

Om du använder flera värden ändras syntaxen eftersom det krävs parenteser för att omge variablerna som skickas in:

print("""Both sides of the %s get the same amount of sunlight, but only one side is seen from %s because the %s rotates around its own axis when it orbits %s.""" % ("Moon", "Earth", "Moon", "Earth"))

Produktionen: Both sides of the Moon get the same amount of sunlight, but only one side is seen from Earth because the Moon rotates around its own axis when it orbits Earth.

Dricks

Även om den här metoden fortfarande är ett giltigt sätt att formatera strängar kan det leda till fel och minskad tydlighet i koden när du hanterar flera variabler. Något av de andra två formateringsalternativen som beskrivs i den här lektionen passar bättre för det här ändamålet.

Metoden format()

Metoden .format() använder klammerparenteser ({}) som platshållare i en sträng och använder variabeltilldelning för att ersätta text.

mass_percentage = "1/6"
print("On the Moon, you would weigh about {} of your weight on Earth.".format(mass_percentage))

Produktionen: On the Moon, you would weigh about 1/6 of your weight on Earth.

Du behöver inte tilldela upprepade variabler flera gånger, vilket gör det mindre utförligt eftersom färre variabler måste tilldelas:

mass_percentage = "1/6"
print("""You are lighter on the {0}, because on the {0} you would weigh about {1} of your weight on Earth.""".format("Moon", mass_percentage))

Produktionen: You are lighter on the Moon, because on the Moon you would weigh about 1/6 of your weight on Earth.

I stället för tomma klammerparenteser är ersättningen att använda tal. Det {0} innebär att använda det första argumentet (indexet noll) till .format(), vilket i det här fallet är Moon. För enkel upprepning {0} fungerar bra, men det minskar läsbarheten. För att förbättra läsbarheten använder du nyckelordsargument i .format() och refererar sedan till samma argument inom klammerparenteser:

mass_percentage = "1/6"
print("""You are lighter on the {moon}, because on the {moon} you would weigh about {mass} of your weight on Earth.""".format(moon="Moon", mass=mass_percentage))

Produktionen: You are lighter on the Moon, because on the Moon you would weigh about 1/6 of your weight on Earth.

Om f-strängar

Från och med Python version 3.6 är det möjligt att använda f-strängar. Dessa strängar ser ut som mallar och använder variabelnamnen från din kod. Att använda f-strängar i föregående exempel skulle se ut så här:

print(f"On the Moon, you would weigh about {mass_percentage} of your weight on Earth.")

Produktionen: On the Moon, you would weigh about 1/6 of your weight on Earth.

Variablerna hamnar inom klammerparenteser och strängen måste använda prefixet f .

Förutom att f-strängar är mindre utförliga än något annat formateringsalternativ är det möjligt att använda uttryck inom klammerparenteserna. Dessa uttryck kan vara funktioner eller direkta åtgärder. Om du till exempel vill representera 1/6 värdet som en procentandel med en decimal kan du använda round() funktionen direkt:

print(round(100/6, 1))

Produktionen: 16.7

Med f-strängar behöver du inte tilldela ett värde till en variabel i förväg:

print(f"On the Moon, you would weigh about {round(100/6, 1)}% of your weight on Earth.")

Produktionen: On the Moon, you would weigh about 16.7% of your weight on Earth.

Att använda ett uttryck kräver inte ett funktionsanrop. Någon av strängmetoderna är också giltiga. Strängen kan till exempel framtvinga ett specifikt hölje för att skapa en rubrik:

subject = "interesting facts about the moon"
heading = f"{subject.title()}"
print(heading)

Produktionen: Interesting Facts About The Moon