✒ 파이썬 출력 글자 색 변경하기
파이썬 출력되는 글자의 색 변경하는 것을 정리하여 말씀드리겠습니다.
Text에 색을 주는 것은 사실은 Python에 특화된 것은 아니고, ANSI escape code를 사용하는 것이라 다른 언어에서도 거의 비슷하게 사용되지만 파이썬 중심으로 설명하겠습니다.
1. 색 표현 예시
사용법은 어렵지 않기에
먼저 보여드리면,
print('\033[95m' + '안녕' + '\033[96m' + '하세요' + '\033[0m')
위와 같이 사용하는 것입니다.
그러면 결과가
위와 같이 나오게 됩니다.
보라색과 하늘색으로 텍스트가 출력되었습니다.
코드를 잘 보면, 금방 이해를 하실 수 있습니다.
텍스트 앞에 '\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')
실행결과 모두 95 를 넣었기 때문에 보라색으로 동일합니다.
어떤 것을 사용해도 상관없습니다.
저는 여기서는 계속 \033[ 으로 진행할 예정입니다.
3. ANSI Text 색 변경 숫자 코드 (글자색, 배경색)
다음으로 '숫자m' 을 설명드리겠습니다.
'm' 은 그냥 가장 뒤에 붙이는 것이라고 생각하시면 됩니다.
위 예시 코드를 보면 0m 이 있었는데요,
0 은 실제 색 코드라기보다는 색을 원래대로 되돌리는 것으로 보시면 됩니다.
숫자는 ANSI 표준으로 정해진 규칙이 있습니다.
즉, 숫자별 색이 정해져 있습니다.
Text의 색 숫자 값은 위와 같이 정리됩니다. (색은 참고용입니다. 실제 표현된 색은 일부 차이가 있을 수 있습니다.)
크게 두 가지로 나누어지는데,
30~37 이 기본 8색이며, 90~97은 기본 8색에서 밝아진 색입니다.
글자색뿐만 아니라 글자 배경색도 변경이 됩니다.
배경색 변경 숫자도 글자색 변경처럼 총 16가지가 정의되어 있습니다.
색은 동일하지만 배경색이 변하는 것으로 생각하시면 됩니다.
배경색은 글자색 뒤에 10씩 더 해진 것이라고 보면 됩니다.
40~47 이 기본 8색이고, 100~107 이 밝아진 색상 8색으로 총 16색이 있습니다.
이제 색상 변경에 대한 이해가 되셨으니
예제 코드를 보겠습니다.
print('\033[31m \033[43m' + '글자와 배경 변경' + '\033[0m')
코드를 설명하여 정리하면
- '\033[31m' : Text 색을 빨간색 (Red) 로 변경
- '\033[43m' : Text 배경색을 노란색(Yellow)로 변경
- '글자와 배경 변경' : '글자와 배경 변경' 이라는 문자열 출력
- '\033[0m' : Terminal 속성 초기화 (Reset)
4. Reset 코드 (초기화)
예제에서 마지막에 들어가는 0m 은 색 코드에서 설명을 안 드렸는데요.
실제 색 변경을 의미하는 것은 아니고, Terminal에 특정 변경을 시도했던 모든 것을 Reset 하는 의미입니다.
만약, 색 변경 후 Reset을 해주지 않으면, 이후의 모든 텍스트는 바로 직전 변경했던 색으로 계속 출력되게 됩니다.
print('\033[31m' + '예시 입니다.')
print('파이썬 최고!')
위의 예와 같이 마지막에 '\033[0m' 이 없을 경우 이후의 모든 Terminal 모든 Text 가 영향을 받습니다.
그래서 색상 변경 시 항상 마지막에 Reset을 해주는 것을 습관처럼 넣어 주는 것이 좋습니다.
이제는 색상 코드표만 참고하시면, 파이썬 글자색이나 글자 배경색 변경은 어렵지 않으실 거라 생각됩니다.
5. 색상 확장 (256-color, True color <RGB> 색 표현)
그런데,
저 위에 16가지 색만 가능한가? 그러기에는 좀 부족하지 않나?
위와 같은 물음이 생길 수 있습니다.
위 색상 코드표의 16색 이외에도
8bit (256 색상) 및 24bit (트루 칼라) 표현이 가능합니다.
5-1) 256-color 색
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/
위 링크에서 Xterm Number 값을 넣으면 됩니다.
예를 들어 DarkOrange 라는 글자색을 표현하고 싶다면 (원래 알던 색은 아닙니다..)
다음과 같이 하면 됩니다.
위 링크에서 DarkOrange 의 Xterm Number 를 찾습니다.
208 번 입니다.
이 값으로 색을 변경하는 코드를 아래와 같이 작성하면,
print('\033[38;5;208m' + '다크 오렌지' + '\033[0m')
위와 같이 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')
6. 글자색 변경 요약
길게 작성했지만,
쉽고 편하게 print 시 글자색이나 배경색 변경을 사용하시려면
- 글자색 변경 (rgb) : '\033[38;2;r;g;bm'
- 배경색 변경 (rgb) : '\033[48;2;r;g;bm'
- 초기화 : '\033[0m'
이렇게만 3개만 아셔도 충분히 색표현 가능하리라 봅니다.
이상으로 파이썬 출력 글자색 변경하는 법 설명을 마치겠습니다.
'IT > Python' 카테고리의 다른 글
Python 오류 메시지의 가독성을 높이자! pretty_errors (0) | 2024.04.01 |
---|---|
Windows 환경에서 pip 쉽게 설치하기 (0) | 2023.06.06 |
Python에서 SQLite3 쿼리문 간단하게 확인하기 (0) | 2022.04.30 |
파이썬 설치된 패키지의 의존성을 트리로 확인해보자 (0) | 2020.10.13 |
파이썬 설치된 모든 패키지 한번에 제거하기 (재설치 하기) (0) | 2020.04.02 |
댓글