Maison >développement back-end >Tutoriel Python >Comment puis-je obtenir un alignement à largeur fixe des chaînes imprimées en Python ?

Comment puis-je obtenir un alignement à largeur fixe des chaînes imprimées en Python ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-05 22:32:02815parcourir

How can I achieve fixed-width alignment of printed strings in Python?

Impression de chaînes avec un alignement à largeur fixe

En programmation, il est souvent souhaitable d'aligner les chaînes dans des colonnes fixes pour plus de clarté et d'organisation visuelle. Cet article explique comment y parvenir à l'aide de techniques de formatage avancées en Python.

Problème : aligner des valeurs de chaîne inégales

Considérez le code suivant qui calcule la fréquence de toutes les permutations dans une chaîne donnée :

# Original code to generate permutations
...

# Printing results
unique = sorted(set(el))
for prefix in unique:
    if prefix != "":
        print("value  ", prefix, "- num of occurrences =   ", string.count(str(prefix)))

Cependant, la sortie peut sembler mal alignée en raison de longueurs de chaîne variables :

value   a - num of occurrences =    1
value   ab - num of occurrences =    1
value   abc - num of occurrences =    1
value   b - num of occurrences =    1
value   bc - num of occurrences =    1
value   bcd - num of occurrences =    1
value   c - num of occurrences =    1
value   cd - num of occurrences =    1
value   d - num of occurrences =    1

Solution utilisant str.format

Pour aligner la sortie, nous pouvons utiliser le str.format Méthode .format avec des spécificateurs de format spécifiques :

# Using str.format for alignment
print("{0: <5}".format("value  ") +
      "{1: >15}".format(prefix) +
      "- num of occurrences =   " +
      "{2: <5}".format(string.count(str(prefix))))

Spécificateurs de format :

  • <5 : alignez la chaîne à gauche dans une largeur de 5 caractères.
  • >15 : alignez la chaîne à droite dans une largeur de 15 caractères.

    Modification 1 : Le "0" dans "{0 : <5}" fait référence à l'index de l'argument passé à str.format().

    Edit 2 : Python 3 introduit f-strings comme alternative concise à str.format :

    # Using f-strings for alignment
    print(f"{'value  ':<5}" +
          f"{prefix:>15}" +
          "- num of occurrences =   " +
          f"{string.count(str(prefix)):<5}")</p>

    Avantages :

    • Lisibilité et organisation améliorées.
    • Flexibilité en spécifiant l'alignement et la largeur.
    • Compatibilité avec Python 2 et Python 3.

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn