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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top