2.4.6 Substituição em strings: o operador %

Uma operação muito útil para processamento de texto é a substituição de símbolos em strings. É particularmente adequada para gerarmos strings formatadas contendo algum valor variável, como o clássico formulário: "Nome: Idade: anos".

  1. Escreve-se a string normalmente, usando um símbolo especial no lugar da lacuna:

    >>> a = "Total de itens: %d"
    >>> b = "Custo: %f"
    

  2. Para efetuar a substituição, aplica-se um operador % sobre a string contendo o símbolo de formatação, seguido do valor ou variável a substituir:

    >>> print a % 10
    Total de itens: 10
    

    Como pode ser visto, o símbolo é substituído pelo valor fornecido. Podem ser utilizados tanto valores explícitos quanto variáveis para a substituição:

    >>> custo = 5.50
    >>> print b % custo
    Custo: 5.500000
    

    Caso sejam múltiplos valores a substituir, use uma tupla:

    >>> print "Cliente: %s, Valor %f" % ("hungry.com", 40.30)
    Fornecedor: hungry.com, Custo 40.300000
    

Este operador permite ainda utilizar um número junto ao símbolo porcentagem para reservar um tamanho total à string:

    >>> a = "Quantidade: %4d" 
    >>> print a % 3
    >>> print a % 53
    >>> print a % 120
    Quantidade:    3
    Quantidade:   53
    Quantidade:  120

É possível controlar a formatação de tipos numéricos de maneira especial através de modificadores nos símbolos no formato m.n. Como acima, m indica o total de caracteres reservados. Para floats, n indica o número de casas decimais; para inteiros, indica o tamanho total do número, preenchido com zeros à esquerda. Ambos os modificadores podem ser omitidos.

    >>> e = 2.7313
    >>> p = 3.1415
    >>> sete = 7
    >>> print "Euler: %.7f" % e        # 7 casas decimais
    Euler: 2.7313000
    >>> print "Pi: %10.3f" % p         # 10 espaços, 3 casas
    Pi:      3.142
    >>> print "Sete: %10.3d" % sete    # 10 espaços, 3 dígitos
    Sete:        007                   # (é um inteiro)