Formatando Strings - Python
Uma maneira de inserir valores em uma string é utilizando f-strings
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: 23
Mas em Python também existe um método alternativo, o método format()
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: 23
Os argumentos no método format()
first_name
first_name
Parâmetros por posição
Também podemos passar uma sequência de argumentos para o método format()
info = "Name: {0}\t Age: {1}".format("Bob", 23)
print(info) # Name: Bob Age: 23
Alé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:
: para inserir stringss
: para inserir números inteirosd
: para inserir números decimais. Para esse tipo, também é possível definir o número de casas decimais após o ponto.f
: multiplica o valor por 100 e adiciona o símbolo de porcentagem%
: exibe o número em notação exponenciale
O formato geral de um marcador é o seguinte:
{:marcador}
Dependendo do marcador, podemos adicionar parâmetros adicionais. Por exemplo, para formatar números float
{:[largura][,][.número_de_casas_decimais]marcador}
Quando chamamos o método format()
welcome = "Hello {:s}"
name = "Tom"
formatted_welcome = welcome.format(name)
print(formatted_welcome) # Hello Tom
Formatando números inteiros
source = "{:d} dollars"
number = 5
target = source.format(number)
print(target) # 5 dollars
Se 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 dollars
Além disso, podemos usar marcadores em f-strings:
number = 50
text = f"{number:,d} cent"
print(text) # 50 cent
Para números decimais (float
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.24
Outro 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)) # 25
Se 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+04
Formataçã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 %
%
info = "Name: %s \t Age: %d" % ("Tom", 35)
print(info) # Name: Tom Age: 35
Após o marcador, usamos o símbolo de porcentagem e, diferente da função format()
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+01
Definindo o comprimento da string
Podemos definir o comprimento da string ao formatar usando símbolos especiais:
: 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.N
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!