Formato de string em Python

Concluído

Além de transformar o texto e realizar operações básicas, como correspondência e pesquisa, é essencial formatar o texto quando estiver apresentando informações. A maneira mais simples de apresentar informações de texto com Python é usar a print() função. Você achará fundamental obter informações em variáveis e outras estruturas de dados em cadeias de caracteres que print() possam ser usadas.

Nesta unidade, você aprenderá várias maneiras válidas de incluir valores de variáveis no texto usando Python.

Formatação do sinal de percentagem (%)

O espaço reservado para a variável na cadeia de caracteres é %s. Após a cadeia de caracteres, use outro % caractere seguido pelo nome da variável. O exemplo a seguir mostra como formatar usando o % caractere:

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

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

O uso de vários valores altera a sintaxe, pois requer parênteses para cercar as variáveis que são passadas:

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"))

Saída: 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.

Gorjeta

Embora esse método ainda seja uma maneira válida de formatar cadeias de caracteres, ele pode levar a erros e diminuição da clareza no código quando você está lidando com várias variáveis. Qualquer uma das outras duas opções de formatação descritas nesta unidade seria mais adequada para esta finalidade.

O format() método

O .format() método usa chaves ({}) como espaços reservados dentro de uma cadeia de caracteres e usa atribuição de variável para substituir texto.

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

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

Você não precisa atribuir variáveis repetidas várias vezes, tornando-as menos detalhadas porque menos variáveis precisam ser atribuídas:

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))

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

Em vez de aparelhos vazios, a substituição é usar números. O {0} meio para usar o primeiro argumento (índice de zero) para .format(), que neste caso é Moon. Para repetição {0} simples funciona bem, mas reduz a legibilidade. Para melhorar a legibilidade, use argumentos de palavra-chave e, em .format() seguida, faça referência aos mesmos argumentos dentro de chaves:

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))

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

Sobre f-strings

A partir da versão 3.6 do Python, é possível usar f-strings. Essas cadeias de caracteres se parecem com modelos e usam os nomes das variáveis do seu código. O uso de f-strings no exemplo anterior teria esta aparência:

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

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

As variáveis vão dentro de chaves, e a string deve usar o prefixo f .

Além de f-strings serem menos detalhadas do que qualquer outra opção de formatação, é possível usar expressões dentro das chaves. Essas expressões podem ser funções ou operações diretas. Por exemplo, se você quiser representar o 1/6 valor como uma porcentagem com uma casa decimal, você pode usar a round() função diretamente:

print(round(100/6, 1))

Saída: 16.7

Com f-strings, você não precisa atribuir um valor a uma variável de antemão:

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

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

Usar uma expressão não requer uma chamada de função. Qualquer um dos métodos de cadeia de caracteres também são válidos. Por exemplo, a cadeia de caracteres pode impor um invólucro específico para criar um título:

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

Saída: Interesting Facts About The Moon