[python] 출력 문자열 형식, 오른쪽 정렬

좌표 x, y, z가 포함 된 텍스트 파일을 처리 중입니다.

     1      128  1298039
123388        0        2
....

모든 라인은 다음을 사용하여 3 개의 항목으로 구분됩니다.

words = line.split()

데이터를 처리 한 후 각 열의 항목이 (입력 파일뿐만 아니라) 올바르게 정렬되도록 다른 txt 파일에 좌표를 다시 작성해야합니다. 모든 선은 좌표로 구성됩니다

line_new = words[0]  + '  ' + words[1]  + '  ' words[2].

std::setw()C ++에는 너비와 정렬을 설정할 수 있는 조작기 등이 있습니까?



답변

최신 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])


답변

다음을 사용하여 달성 할 수 있습니다 rjust.

line_new = word[0].rjust(10) + word[1].rjust(10) + word[2].rjust(10)


답변

다음과 같이 정렬 할 수 있습니다.

print('{:>8} {:>8} {:>8}'.format(*words))

여기서 >수단 ” 오른쪽 정렬 “과 8는 IS 특정 값이.

그리고 여기에 증거가 있습니다 :

>>> for line in [[1, 128, 1298039], [123388, 0, 2]]:
    print('{:>8} {:>8} {:>8}'.format(*line))


       1      128  1298039
  123388        0        2

추신. *lineline목록이 압축 해제 됨을 의미 하므로 다음 .format(*line)과 유사하게 작동합니다 .format(line[0], line[1], line[2])( line3 개의 요소 만있는 목록 이라고 가정 ).


답변

파이썬 3.6 이상에서 새로운 리터럴 문자열 보간을 정말 즐깁니다.

line_new = f'{word[0]:>12}  {word[1]:>12}  {word[2]:>12}'

참조 : PEP 498-리터럴 문자열 보간


답변

다음은 ‘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 자이며 오른쪽으로 정렬되었다는 것입니다.


답변

출력의 간단한 표 :

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- 문자열을 사용하고 후행 자릿수를 제어하여 수행하려면 다음을 수행하십시오.

print(f'A number -> {my_number:>20.5f}')