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 strings
- d: para inserir números inteiros
- f: 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 porcentagem
- e: 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: