回答:
新しいstr.format
構文を使用してこのアプローチを試してください:
line_new = '{:>12} {:>12} {:>12}'.format(word[0], word[1], word[2])
そして、これは古い%
構文を使用してそれを行う方法です(サポートしていない古いバージョンのPythonに役立ちますstr.format
):
line_new = '%12s %12s %12s' % (word[0], word[1], word[2])
あなたはそれをそのように揃えることができます:
print('{:>8} {:>8} {:>8}'.format(*words))
どこ>
の手段は、「右に整列」と8
ある幅の特定の値のため。
そしてここに証明があります:
>>> for line in [[1, 128, 1298039], [123388, 0, 2]]:
print('{:>8} {:>8} {:>8}'.format(*line))
1 128 1298039
123388 0 2
Ps。リストがアンパックされることを*line
意味するline
ので、.format(*line)
同様に機能します.format(line[0], line[1], line[2])
(line
要素が3つだけのリストであると想定)。
私はPython 3.6以降で新しいリテラル文字列補間を本当に楽しんでいます:
line_new = f'{word[0]:>12} {word[1]:>12} {word[2]:>12}'
「f-string」フォーマットを使用してフォーマットする別の方法を次に示します。
print(
f"{'Trades:':<15}{cnt:>10}",
f"\n{'Wins:':<15}{wins:>10}",
f"\n{'Losses:':<15}{losses:>10}",
f"\n{'Breakeven:':<15}{evens:>10}",
f"\n{'Win/Loss Ratio:':<15}{win_r:>10}",
f"\n{'Mean Win:':<15}{mean_w:>10}",
f"\n{'Mean Loss:':<15}{mean_l:>10}",
f"\n{'Mean:':<15}{mean_trd:>10}",
f"\n{'Std Dev:':<15}{sd:>10}",
f"\n{'Max Loss:':<15}{max_l:>10}",
f"\n{'Max Win:':<15}{max_w:>10}",
f"\n{'Sharpe Ratio:':<15}{sharpe_r:>10}",
)
これにより、次の出力が提供されます。
Trades: 2304
Wins: 1232
Losses: 1035
Breakeven: 37
Win/Loss Ratio: 1.19
Mean Win: 0.381
Mean Loss: -0.395
Mean: 0.026
Std Dev: 0.56
Max Loss: -3.406
Max Win: 4.09
Sharpe Ratio: 0.7395
ここでは、最初の列が15文字で左揃えであり、2番目の列(値)が10文字で右揃えであることを示しています。
widths = [15, 10]
f"{'Trades:':<width[0]}{cnt:>width[1]}",
上記のようなsthを達成したいと思います。
f"{'Trades:':<{width[0]}}{cnt:>{width[1]}}"