座標x、y、zを含むテキストファイルを処理しています
1 128 1298039
123388 0 2
....
すべての行は3つの項目に区切られています
words = line.split()
データを処理した後、各列の項目が(入力ファイルと同様に)右揃えになるように、座標を別のtxtファイルに書き戻す必要があります。すべての行は座標で構成されています
line_new = words[0] + ' ' + words[1] + ' ' words[2].
C++でstd::setw()
などのようなマニピュレータがあり、幅と配置を設定できますか?
新しい str.format
構文 を使用してこのアプローチを試してください:
line_new = '{:>12} {:>12} {:>12}'.format(Word[0], Word[1], Word[2])
そして、古い%
構文(str.format
をサポートしていないPythonの古いバージョンに有用)を使用してそれを行う方法は次のとおりです。
line_new = '%12s %12s %12s' % (Word[0], Word[1], Word[2])
次のように調整できます。
print('{:>8} {:>8} {:>8}'.format(*words))
ここで、>
は「右揃え」を意味し、8
は特定の値のwidthです。
そして、ここに証拠があります:
>>> 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
が3つの要素のみを持つリストであると仮定します)。
rjust
を使用して実現できます。
line_new = Word[0].rjust(10) + Word[1].rjust(10) + Word[2].rjust(10)
Python 3.6+の新しいリテラル文字列補間を本当に楽しんでいます:
line_new = f'{Word[0]:>12} {Word[1]:>12} {Word[2]:>12}'
リファレンス: PEP 498-リテラル文字列補間
出力の簡単な表:
a = 0.3333333
b = 200/3
print("variable a variable b")
print("%10.2f %10.2f" % (a, b))
出力:
variable a variable b
0.33 66.67
%10.2f: 10は最小長であり、2は小数点以下の桁数です。
「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文字で右揃えであるということです。