Si vous voulez juste utiliser {:>9}
comme le code de format avec un nombre arbitraire de colonnes, essayez ceci:
fieldFormat = ' '.join(['{:>9}'] * len(tableData))
for nestedList in zip(*tableData):
print(fieldFormat.format(*nestedList))
Ce juste crée une liste de {:>9}
spécificateurs de format, un pour chaque colonne TableData, puis rejoint les ensemble avec des espaces.
Si vous voulez calculer automatiquement les largeurs de champ, ainsi, vous pouvez le faire:
fieldWidths = [max(len(word) for word in col) for col in tableData]
fieldFormat = ' '.join('{{:>{}}}'.format(wid) for wid in fieldWidths)
for nestedList in zip(*tableData):
print(fieldFormat.format(*nestedList))
fieldWidths
est générée à partir d'une compréhension de la liste qui calcule la longueur maximale de chaque mot dans chaque colonne. De l'intérieur:
(len(word) for word in col)
Ceci est un générateur qui produira la longueur de chaque mot dans col
.
max(len(word) for word in col)
alimentation du générateur (ou tout iterable) dans max
va calculer la valeur maximale de tout produit par l'iterable.
[max(len(word) for word in col) for col in tableData]
Cette compréhension de liste produit la longueur maximale de tous les mots dans chaque colonne col
de données dans tableData
.
fieldFormat
est ensuite produit en transformant fieldWidths
en spécificateurs de format.Encore une fois à l'intérieur:
'{{:>{}}}'.format(wid)
ces formats wid
dans le format {:>#}
. {{
est un moyen d'avoir un spécificateur de format produit un {
; de même, }}
produit }
. Le {}
au milieu est ce qui est réellement formaté avec wid
.
('{{:>{}}}'.format(wid) for wid in fieldWidths)
Ceci est une fonction de générateur qui effectue le formatage ci-dessus pour chaque largeur répertoriée dans fieldWidths.
fieldFormat = ' '.join('{{:>{}}}'.format(wid) for wid in fieldWidths)
Ce juste rejoint ces formats ainsi que les espaces entre les deux pour créer le spécificateur de format fieldFormat
.
salut @ nutmeg64, c'est génial. Quelle est l'utilisation de 'print()' à la fin, s'il vous plaît? –
Juste l'impression d'une nouvelle ligne – nutmeg64
acclamations @ nutmeg64 –