L'écriture blanche espace texte délimité pour être lisible en Python
-
02-10-2019 - |
Question
J'ai une liste de listes qui ressemble à quelque chose comme ceci:
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
Je vous écris les informations dans un fichier comme ceci:
for i in data:
for j in i:
file.write('\t')
file.write(j)
file.write('\n')
Les regards de sortie comme ceci:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Les colonnes ne sont pas alignées avec soin en raison de la variation de la longueur du premier élément dans chaque liste interne. Comment puis-je écrire des quantités appropriées d'espace entre les premier et second éléments pour faire la deuxième ligne de colonne pour la lisibilité humaine?
La solution
Vous avez besoin d'une chaîne de format:
for i,j in data:
file.write('%-15s %s\n' % (i,j))
moyens de %-15s
gauche justifient un champ de 15 l'espace pour une chaîne. Voici la sortie:
seq1 ACTAGACCCTAG
sequence287653 ACTAGNACTGGG
s9 ACTAGAAACTAG
Autres conseils
data = [['seq1', 'ACTAGACCCTAG'],
['sequence287653', 'ACTAGNACTGGG'],
['s9', 'ACTAGAAACTAG']]
with open('myfile.txt', 'w') as file:
file.write('\n'.join('%-15s %s' % (i,j) for i,j in data) )
pour moi est encore plus clair que l'expression avec boucle
"%10s" % obj
assurera au moins 10 places avec la représentation de chaîne de obj aligné à droite.
"%-10s" % obj
fait la même chose, mais il aligne à gauche.