Question chaîne centrale python utilisant un spécificateur de format


J'ai une chaîne appelée Message.

Message = "Hello, welcome!\nThis is some text that should be centered!"

Oui, ce n'est qu'une déclaration de test ...

Et j'essaie de le centrer pour une fenêtre Terminal par défaut, c'est-à-dire d'une largeur de 80, avec cette instruction:

print('{:^80}'.format(Message))

Quelles impressions:

           Hello, welcome!
This is some text that should be centered!           

Je m'attends à quelque chose comme:

                                Hello, welcome!                                 
                   This is some text that should be centered!                   

Aucune suggestion?


16
2017-11-14 16:44


origine


Réponses:


Vous devez centrer chaque ligne séparément:

'\n'.join('{:^80}'.format(s) for s in Message.split('\n'))

17
2017-11-14 17:00



Voici une alternative qui centrera automatiquement votre texte en fonction de la plus grande largeur.

def centerify(text, width=-1):
  lines = text.split('\n')
  width = max(map(len, lines)) if width == -1 else width
  return '\n'.join(line.center(width) for line in lines)

print(centerify("Hello, welcome!\nThis is some text that should be centered!"))
print(centerify("Hello, welcome!\nThis is some text that should be centered!", 80))

<script src="//repl.it/embed/IUUa/4.js"></script>


0
2018-05-27 13:45