Pythonで読みやすくなる人間になるホワイトスペースの区切りテキストを書く

StackOverflow https://stackoverflow.com/questions/3689936

質問

私はこのようなものに見えるリストのリストを持っています:

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番目の列をラインアップするにはどうすればよいですか?

役に立ちましたか?

解決

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

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

%-15s 左の意味は、文字列の15スペースフィールドを正当化します。これが出力です:

seq1            ACTAGACCCTAG
sequence287653  ACTAGNACTGGG
s9              ACTAGAAACTAG

他のヒント

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) )

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

"%10s" % obj OBJの文字列表現が右側に揃った最低10スペースを確保します。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top