108 votes

Chaîne de caractères multi-lignes avec des arguments. Comment déclarer ?

Disons que j'ai une chaîne extrêmement longue avec des arguments que je veux créer. Je sais que vous pouvez créer une chaîne de caractères multiligne avec

cmd = """line 1
      line 2
      line 3"""

Mais maintenant, disons que je veux passer 1, 2, et 3 comme arguments.

Cela fonctionne

cmd = """line %d
      line %d
      line %d""" % (1, 2, 3)

Mais si j'ai une chaîne super longue avec plus de 30 arguments, comment puis-je passer ces arguments en plusieurs lignes ? Les passer sur une seule ligne va à l'encontre de l'objectif de créer une chaîne de caractères multilignes.

Merci d'avance à tous pour leur aide et leurs conseils.

5voto

Qlaus Points 857

Pour avoir les arguments dans la même ligne qu'ils sont insérés, vous pourriez faire comme ceci :

cmd = "line %d\n"%1 +\
      "line %d\n"%2 +\
      "line %d\n"%3

[EDIT :] En réponse au premier commentaire, j'ai trouvé ceci :

cmd = "\n".join([
      "line %d"%1,
      "line %d"%2,
      "line %d"%3])

3voto

George Points 148

Vous pouvez utiliser textwrap.dedent pour supprimer les espaces de tête des lignes :

import textwrap

cmd = str.strip(textwrap.dedent(
    '''
        line {}
            line with indent
        line {}
        line {}
    '''
    .format(1, 2, 3)))

Cela se traduit par :

line 1
    line with indent
line 2
line 3

2voto

Cameron Points 32208

Cela fonctionne pour moi :

cmd = """line %d
      line %d
      line %d""" % (
          1,
          2,
          3
      )

2voto

George Points 148

Voici la version la plus simple, qui est également adaptée à l'IDE en termes de vérification. format arguments :

cmd = (
    'line {}\n'
    'line {}\n'
    'line {}\n'
    .format(1, 2, 3))

Version des arguments multilignes :

cmd = (
    'line {}\n'
    'line {}\n'
    'line {}\n'
    .format(
        'very very very very very very very very very long 1',
        'very very very very very very very very very long 2',
        'very very very very very very very very very long 3',
    )
)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X