Answers:
使用更新的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
附言 *line
表示该line
列表将被解压缩,因此其.format(*line)
工作方式类似于.format(line[0], line[1], line[2])
(假设line
一个仅包含三个元素的列表)。
我真的很喜欢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个字符,并且左对齐,第二列的值(长度)为10个字符,并且右对齐。
widths = [15, 10]
f"{'Trades:':<width[0]}{cnt:>width[1]}",
我想达到上述目标。
f"{'Trades:':<{width[0]}}{cnt:>{width[1]}}"