Formatando Strings em Python
Uma maneira de inserir valores em uma string é utilizando f-strings, que são strings precedidas pelo símbolo f:
first_name = "Tom"
text = f"Hello, {first_name}."
print(text) # Hello, Tom.
name = "Bob"
age = 23
info = f"Name: {name}\t Age: {age}"
print(info) # Name: Bob Age: 23Mas em Python também existe um método alternativo, o método format(). Este método permite formatar uma string, inserindo valores específicos no lugar de marcadores.
Para inserir valores na string, utilizam-se parâmetros especiais delimitados por chaves {}.
Parâmetros nomeados
Na string formatada, podemos definir parâmetros e passar valores para esses parâmetros no método format():
text = "Hello, {first_name}.".format(first_name="Tom")
print(text) # Hello, Tom.
info = "Name: {name}\t Age: {age}".format(name="Bob", age=23)
print(info) # Name: Bob Age: 23Os argumentos no método format() são definidos com o mesmo nome que os parâmetros na string. Assim, se o parâmetro é chamado first_name, como no primeiro caso, o argumento que recebe o valor também é chamado first_name.
Parâmetros por posição
Também podemos passar uma sequência de argumentos para o método format(), e na string formatada inserir esses argumentos especificando seu índice entre chaves (a numeração começa em zero):
info = "Name: {0}\t Age: {1}".format("Bob", 23)
print(info) # Name: Bob Age: 23Além disso, podemos inserir os argumentos na string várias vezes:
text = "Hello, {0} {0} {0}.".format("Tom")Substituições
Outra maneira de inserir valores formatados em uma string é usando substituições ou marcadores especiais, onde valores específicos são inseridos. Para formatação, podemos usar os seguintes marcadores:
s: para inserir stringsd: para inserir números inteirosf: para inserir números decimais. Para esse tipo, também é possível definir o número de casas decimais após o ponto.%: multiplica o valor por 100 e adiciona o símbolo de porcentageme: exibe o número em notação exponencial
O formato geral de um marcador é o seguinte:
{:marcador}Dependendo do marcador, podemos adicionar parâmetros adicionais. Por exemplo, para formatar números float, podemos usar os seguintes parâmetros:
{:[largura][,][.número_de_casas_decimais]marcador}Quando chamamos o método format(), passamos os valores como argumentos, que serão inseridos nos lugares dos marcadores:
welcome = "Hello {:s}"
name = "Tom"
formatted_welcome = welcome.format(name)
print(formatted_welcome) # Hello TomFormatando números inteiros
source = "{:d} dollars"
number = 5
target = source.format(number)
print(target) # 5 dollarsSe o número formatado for maior que 999, podemos especificar no marcador que desejamos usar uma vírgula como separador de milhares:
source = "{:,d} dollars"
print(source.format(5000)) # 5,000 dollarsAlém disso, podemos usar marcadores em f-strings:
number = 50
text = f"{number:,d} cent"
print(text) # 50 centPara números decimais (float), podemos especificar quantas casas decimais queremos exibir, colocando um ponto seguido do número de casas decimais antes do código do marcador:
number = 23.8589578
print("{:.2f}".format(number)) # 23.86
print("{:.3f}".format(number)) # 23.859
print("{:.4f}".format(number)) # 23.8590
print("{:,.2f}".format(10001.23554)) # 10,001.24Outro parâmetro permite definir a largura mínima do valor formatado em caracteres:
print("{:10.2f}".format(23.8589578)) # 23.86
print("{:8d}".format(25)) # 25Se o valor formatado for menor que a largura mínima, espaços em branco serão adicionados à esquerda. Se o valor for maior, a largura mínima será ignorada.
Para exibir porcentagens, usamos o marcador %:
number = 0.12345
print("{:%}".format(number)) # 12.345000%
print("{:.0%}".format(number)) # 12%
print("{:.1%}".format(number)) # 12.3%
print(f"{number:%}") # 12.345000%
print(f"{number:.0%}") # 12%
print(f"{number:.1%}") # 12.3%Para exibir um número em notação exponencial, usamos o placeholder e:
number = 12345.6789
print("{:e}".format(number)) # 1.234568e+04
print("{:.0e}".format(number)) # 1e+04
print("{:.1e}".format(number)) # 1.2e+04
print(f"{number:e}") # 1.234568e+04
print(f"{number:.0e}") # 1e+04
print(f"{number:.1e}") # 1.2e+04Formatação sem o método format
Existe ainda outra maneira de formatar usando a sintaxe a seguir:
string % (parâmetro1, parâmetro2, ..., parâmetroN)Isto é, primeiro vem a string que contém os mesmos marcadores mencionados anteriormente (exceto o marcador %), seguida do símbolo de porcentagem %, e então uma lista de valores que serão inseridos na string. O símbolo de porcentagem representa uma operação que resulta em uma nova string:
info = "Name: %s \t Age: %d" % ("Tom", 35)
print(info) # Name: Tom Age: 35Após o marcador, usamos o símbolo de porcentagem e, diferente da função format(), aqui não precisamos de chaves.
Os métodos de formatação de números também são aplicáveis aqui:
number = 23.8589578
print("%0.2f - %e" % (number, number)) # 23.86 - 2.385896e+01Definindo o comprimento da string
Podemos definir o comprimento da string ao formatar usando símbolos especiais:
<N: alinha a string à esquerda e preenche com espaços à direita até o comprimento N>N: alinha a string à direita e preenche com espaços à esquerda até o comprimento N^N: alinha a string ao centro e preenche com espaços à esquerda e à direita até o comprimento N.N: define o comprimento exato da string. Se ela tiver mais que N caracteres, é truncada
Por exemplo:
str = "Hello World"
print(f"{str:>16}!")
print(f"{str:<16}!")
print(f"{str:^16}!")
print(f"{str:.16}!")
print(f"{str:.5}!")Resultado:
Hello World!
Hello World !
Hello World !
Hello World!
Hello!Documentação oficial: