4

次のようなリストのリストがあります。

data = [['seq1', 'ACTAGACCCTAG'],
        ['sequence287653', 'ACTAGNACTGGG'],
        ['s9', 'ACTAGAAACTAG']]

私はこのようなファイルに情報を書き込みます:

for i in data:
    for j in i:
        file.write('\t')
        file.write(j)
    file.write('\n')

出力は次のようになります。

seq1   ACTAGACCCTAG  
sequence287653   ACTAGNACTGGG  
s9   ACTAGAAACTAG  

各内部リストの最初の要素の長さが異なるため、列がきちんと並んでいません。人間が読みやすいように2番目の列を揃えるために、最初の要素と2番目の要素の間に適切な量の空白を書き込むにはどうすればよいですか?

4

3 に答える 3

10

フォーマット文字列が必要です。

for i,j in data:
    file.write('%-15s %s\n' % (i,j))

%-15s文字列の15スペースフィールドを左揃えにすることを意味します。出力は次のとおりです。

seq1            ACTAGACCCTAG
sequence287653  ACTAGNACTGGG
s9              ACTAGAAACTAG
于 2010-09-11T05:40:23.827 に答える
1
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) )

私にとっては、ループを使用した式よりも明確です

于 2010-09-11T06:35:27.610 に答える
0

"%10s" % objobjの文字列表現が右側に配置された状態で最低10個のスペースが確保されます。

"%-10s" % obj同じことをしますが、左に揃えます。

于 2010-09-11T05:46:21.067 に答える