Python 출력 text의 color 변경 - grruju/uju GitHub Wiki

Text에 색을 주는 것은 사실 Python에 특화된 것은 아닌, ANSI escape code를 사용하는 것

1. 색 표현 예시

print('\033[95m' + '안녕' + '\033[96m' + '하세요' + '\033[0m')

1

텍스트 앞에 '\033[' 을 주고, 뒤에 어떤 숫자와 'm' 을 붙인 것을 넣어 색이 변경

\033[  +  숫자  + m

형태로 사용

2. Escape 코드 (색 변경을 위한 시작 코드)

'\033[' 이 기호는 Escape sequences 중에서 Control Sequence Introduce (CSI) 를 나타내는 코드. Terminal 창에 뭔가 특수한 역할을 하는 명령을 주는 시작 코드라고 이해하면 된다. 숫자가 왜 033 이냐 하면, 033 은 oct 로 ESC 코드를 나타내는 것으로,

'\033[' 은 '\xb1[' 이나 '\u001b[' 로 대체해서 사용해도 동일한 효과를 볼 수 있다.

\033[ = \xb1[ = \u001b[

print('\033[95m' + '1.안녕' + '\033[0m')
print('\x1b[95m' + '2.안녕' + '\x1b[0m') 
print('\u001b[95m' + '3.안녕' + '\u001b[0m')

image

실행결과 모두 95를 사용하였기 때문에 결과값이 동일.

3. ANSI Text 색 변경 숫자 코드 (글자색, 배경색)

'숫자m'에서 'm'은 가장 뒤에 붙이는 코드로 생각하면 된다. '0m'에서 0은 실제 색 코드가 아닌 색을 원래대로 되돌리는 것으로 보면 된다. 숫자는 ANSI 표준으로 정해진 규칙이 있다.

image

글자색 뿐만 아니라 배경색도 변경이 된다.

image

예제코드

print('\033[31m \033[43m' + '글자와 배경 변경' + '\033[0m')

결과

image

코드를 설명하자면

  • '\033[31m' : Text 색을 빨간색 (Red) 로 변경
  • '\033[43m' : Text 배경색을 노란색(Yellow)로 변경
  • '글자와 배경 변경' : '글자와 배경 변경' 이라는 문자열 출력
  • '\033[0m' : Terminal 속성 초기화 (Reset)

4. Reset 코드 (초기화)

0m의 경우 실제 색 변경을 의미하는 것은 아니고, Terminal에 특정 변경을 시도했던 모든 것을 Reset 하는 의미

만약, 색 변경 후 Reset을 해주지 않으면, 이후의 모든 텍스트는 바로 직전 변경했던 색으로 계속 출력 되게 된다.

5. 색상 확장 (256-color, True color 색 표현)

위의 16가지 ANSI 코드만 사용할 수 있는 것이 아닌 RGB 색상 표현도 가능.

5-1) 256-color

256-color 글자색 변경

\033[38;5;256색상값m

256-color 배경색 변경

\033[48;5;256색상값m

글자색은 '\033[38;5; 다음에 256-color 색상 값을 넣어준 뒤 m 을 붙이면 된다.

배경색은 '\033[38;5; 다음에 256-color 색상 값을 넣어준 뒤 m 을 붙이면 된다.

256-color 색상 값이 필요한데, 색상 값은 아래 링크를 참고하면 된다.

https://jonasjacek.github.io/colors/

예를 들어 DarkOrange 라는 글자색을 표현하고 싶다면 다음과 같이 하면 된다. 위 링크에서 DarkOrange 의 Xterm Number 를 찾은뒤

image

208번 다크오렌지로 코드를 작성하면

print('\033[38;5;208m' + '다크 오렌지' + '\033[0m')

image

위와 같이 256-color 중 하나인 DarkOrange 색으로 글자색이 출력되는 것을 확인할 수 있다.

5-2) True color (RGB) 색

24Bit True color (RGB) 로 글자색 및 배경색을 변경하는 방법은 다음과 같다.

True color 는 많이 사용하고 있는 RGB 값을 사용해서 표현한다.

true color 글자색 변경

\033[38;2;r;g;b m

true color 배경색 변경

\033[48;2;r;g;b m

글자색 변경은 '\033[38;2; 뒤에 r값; g값; b값 그리고 m 을 넣어주면 됩니다.

배경색 변경은 '\033[48;2; 뒤에 r값; g값; b값 그리고 m 을 넣어주면 됩니다.

예를 들어 Orchid 라는 색은, RGB 값이 215, 95, 215 이며

이 색으로 글자색을 변경한다면

다음과 같이 코드를 작성하면 된다.

print('\033[38;2;215;95;215m' + 'RGB값으로 색 변경' + '\033[0m')

image

6. 글자색 변경 요약

길게 작성했지만,

쉽고 편하게 print 시 글자색이나 배경색 변경을 사용하려면

  • 글자색 변경 (rgb) : '\033[38;2;r;g;bm'
  • 배경색 변경 (rgb) : '\033[48;2;r;g;bm'
  • 초기화 : '\033[0m'

이렇게 3개만 숙지하여도 충분히 색표현이 가능하다.

⚠️ **GitHub.com Fallback** ⚠️