strings multi-linha legíveis em python

Strings com várias linhas em python podem ser úteis, mas o espaço em branco extra que é preservado pode ser um problema.

A primeira (feia) solução é escrever strings de várias linhas sem indentação como:

def foo(my_dict):
config
= """USER={username}
SERVICENAME=

DEMAND=no

DNSTYPE=NOCHANGE

USERCTL=no

FIREWALL=NONE

ETH={interface}

LCP_INTERVAL=10

LCP_FAILURE=3

PIDFILE=/var/run/pppoe

CLAMPMSS=no

PPPOE_TIMEOUT=20

DEFROUTE=YES"""
.format(**my_dict)

return config

No entanto, isso é feio e um pouco ilegível. A melhor maneira é recuar a string e, em seguida, usar o textwrapmódulo para remover o espaço em branco extra:

import textwrap

def foo(my_dict):
config
= """
USER={username}

SERVICENAME=

DEMAND=no

DNSTYPE=NOCHANGE

USERCTL=no

FIREWALL=NONE

ETH={interface}

LCP_INTERVAL=10

LCP_FAILURE=3

PIDFILE=/var/run/pppoe

CLAMPMSS=no

PPPOE_TIMEOUT=20

DEFROUTE=YES

"""
.format(**my_dict)

config
= textrwap.dedent(config)
return config

Documentação: http://docs.python.org/2/library/textwrap.html#textwrap.dedent