Pythonで読みやすくなる人間になるホワイトスペースの区切りテキストを書く
-
02-10-2019 - |
質問
私はこのようなものに見えるリストのリストを持っています:
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
同じことをしますが、左に整列します。
所属していません StackOverflow