본문 바로가기
프로그래밍/Python

[Python] chr 내장 함수 : 유니코드를 한 문자로 변환

by 빛밤하늘 2021. 6. 5.
반응형

2021.05.31 - [프로그래밍/Python] - [Python] ord 내장 함수 : 한 문자를 유니코드로 변환

 

[Python] ord 내장 함수 : 한 문자를 유니코드로 변환

백준에 있는 문제들을 풀면서 알파벳이나 숫자들을 유니코드로 변환해서 푸는 문제들이 많이 나왔습니다. 파이썬에는 유니코드와 관련된 문제들을 해결하기 위해 한 문자를 유니코드로 변환하

brightnightsky77.tistory.com

 

 

 

지난번에 포스팅한 파이썬에서 한 문자를 유니코드로 변환하는 ord 내장 함수에 이어서 

그 반대인 유니코드를 한 문자로 변환하는 chr 내장 함수에 대해서 포스팅해보겠습니다.

 

 

 

 

 

 

 

1. chr 내장 함수

1-1. 사용법과 결과

chr 내장 함수의 사용법은 다음과 같습니다.

 

  • chr('문자로 표현할 유니코드 숫자 1개')

 

코드를 실행시키면 매개변수에 넣은 유니코드 숫자 1개에 대한 문자 하나를 반환합니다.

 

참고로 매개변수에 들어가는 숫자에는 우리가 일상적으로 사용하는 10진법 숫자말고도

2진법, 8진법, 16진법의 숫자도 가능합니다.

 

파이썬에서는 '0b2진법 숫자', '0o8진법 숫자', '0x16진법 숫자' 형태로 2진법, 8진법, 16진법 숫자를 직접 입력하거나

bin, oct, hex 내장 함수로 각각 2진법, 8진법, 16진법의 숫자를 만들 수 있습니다.

(bin, oct, hex 내장 함수에 대해서도 나중에 자세한 포스팅을 해보겠습니다.)

 

chr 내장 함수는 위와 같이 2진법, 8진법, 16진법 숫자를 만들어서 매개변수에 넣어도

그 유니코드 숫자에 해당하는 문자를 출력합니다.

 

chr 내장 함수의 매개변수에 다른 진법의 숫자를 넣은 자세한 예제는 밑의 실행 결과 목차 1-3-5에서 확인하시면 됩니다.

 

 

 

1-2. 공식 문서

밑의 링크는 파이썬 내장 함수들에 대한 파이썬 공식 문서 페이지입니다.

ord 내장 함수와 마찬가지로 여기서 chr 내장 함수에 대한 공식 문서 내용을 찾을 수 있습니다.

 

내장 함수 — Python 3.9.5 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org

 

 

 

 

 

 

 

 

1-3. 실행 결과

1-3-1. 10진법 유니코드 숫자들을 숫자 형태의 문자 0 ~ 9로 변환

앞서 ord 내장 함수의 결과에서 확인해봤듯이 숫자 형태의 문자 0 ~ 9는 유니코드 숫자 48 ~ 57과 연결되어 있습니다.

따라서 chr 내장 함수의 매개변수에 유니코드 숫자인 정수 48 ~ 57을 넣으면

각각 숫자 형태의 문자 0 ~ 9로 반환됩니다.

 

밑의 파이썬 코드와 결과는 위의 내용을 확인한 것입니다.

정수형 숫자가 아닌 숫자 형태의 문자로 제대로 나오는지 결과의 자료형도 같이 확인해봤습니다.

# 10진법 유니코드 숫자 48 ~ 57을 숫자 형태의 문자 0 ~ 9로 변환하고 결과의 자료형을 확인해봅니다.
print("10진법 유니코드 숫자 48을 숫자 형태의 문자 0으로 변환:", chr(48), "|", "결과 자료형 확인:", type(chr(48)))
print("10진법 유니코드 숫자 49를 숫자 형태의 문자 1로 변환:", chr(49), "|", "결과 자료형 확인:", type(chr(49)))
print("10진법 유니코드 숫자 50을 숫자 형태의 문자 2로 변환:", chr(50), "|", "결과 자료형 확인:", type(chr(50)))
print("10진법 유니코드 숫자 51을 숫자 형태의 문자 3으로 변환:", chr(51), "|", "결과 자료형 확인:", type(chr(51)))
print("10진법 유니코드 숫자 52를 숫자 형태의 문자 4로 변환:", chr(52), "|", "결과 자료형 확인:", type(chr(52)))
print("10진법 유니코드 숫자 53을 숫자 형태의 문자 5로 변환:", chr(53), "|", "결과 자료형 확인:", type(chr(53)))
print("10진법 유니코드 숫자 54를 숫자 형태의 문자 6으로 변환:", chr(54), "|", "결과 자료형 확인:", type(chr(54)))
print("10진법 유니코드 숫자 55를 숫자 형태의 문자 7로 변환:", chr(55), "|", "결과 자료형 확인:", type(chr(55)))
print("10진법 유니코드 숫자 56을 숫자 형태의 문자 8로 변환:", chr(56), "|", "결과 자료형 확인:", type(chr(56)))
print("10진법 유니코드 숫자 57을 숫자 형태의 문자 9로 변환:", chr(57), "|", "결과 자료형 확인:", type(chr(57)))

10진법 유니코드 숫자 48 ~ 57을 숫자 형태의 문자 0 ~ 9로 변환하고 결과의 자료형을 확인한 결과

 

1-3-2. 10진법 유니코드 숫자들을 알파벳 대문자 A ~ Z로 변환

앞서 ord 내장 함수에서 확인해봤듯이 알파벳 대문자 A ~ Z는 유니코드 숫자 65 ~ 90과 연결되어 있습니다.

따라서 chr 내장 함수의 매개변수에 유니코드 숫자인 정수 65 ~ 90을 넣으면

각각 알파벳 대문자 A ~ Z로 반환됩니다.

 

밑의 파이썬 코드와 결과는 위의 내용을 확인한 것입니다.

# 10진법 유니코드 숫자 65 ~ 90을 알파벳 대문자 A ~ Z로 변환해봅니다.
print("10진법 유니코드 숫자 65를 알파벳 대문자 A로 변환:", chr(65))
print("10진법 유니코드 숫자 66을 알파벳 대문자 B로 변환:", chr(66))
print("10진법 유니코드 숫자 67를 알파벳 대문자 C로 변환:", chr(67))
print("10진법 유니코드 숫자 68을 알파벳 대문자 D로 변환:", chr(68))
print("10진법 유니코드 숫자 69를 알파벳 대문자 E로 변환:", chr(69))
print("10진법 유니코드 숫자 70을 알파벳 대문자 F로 변환:", chr(70))
print("10진법 유니코드 숫자 71을 알파벳 대문자 G로 변환:", chr(71))
print("10진법 유니코드 숫자 72를 알파벳 대문자 H로 변환:", chr(72))
print("10진법 유니코드 숫자 73을 알파벳 대문자 I로 변환:", chr(73))
print("10진법 유니코드 숫자 74를 알파벳 대문자 J로 변환:", chr(74))
print("10진법 유니코드 숫자 75를 알파벳 대문자 K로 변환:", chr(75))
print("10진법 유니코드 숫자 76을 알파벳 대문자 L로 변환:", chr(76))
print("10진법 유니코드 숫자 77을 알파벳 대문자 M으로 변환:", chr(77))
print("10진법 유니코드 숫자 78을 알파벳 대문자 N으로 변환:", chr(78))
print("10진법 유니코드 숫자 79를 알파벳 대문자 O로 변환:", chr(79))
print("10진법 유니코드 숫자 80을 알파벳 대문자 P로 변환:", chr(80))
print("10진법 유니코드 숫자 81을 알파벳 대문자 Q로 변환:", chr(81))
print("10진법 유니코드 숫자 82를 알파벳 대문자 R로 변환:", chr(82))
print("10진법 유니코드 숫자 83을 알파벳 대문자 S로 변환:", chr(83))
print("10진법 유니코드 숫자 84를 알파벳 대문자 T로 변환:", chr(84))
print("10진법 유니코드 숫자 85를 알파벳 대문자 U로 변환:", chr(85))
print("10진법 유니코드 숫자 86을 알파벳 대문자 V로 변환:", chr(86))
print("10진법 유니코드 숫자 87을 알파벳 대문자 W로 변환:", chr(87))
print("10진법 유니코드 숫자 88을 알파벳 대문자 X로 변환:", chr(88))
print("10진법 유니코드 숫자 89를 알파벳 대문자 Y로 변환:", chr(89))
print("10진법 유니코드 숫자 90을 알파벳 대문자 Z로 변환:", chr(90))

10진법 유니코드 숫자 65 ~ 90을 알파벳 대문자 A ~ Z로 변환

 

1-3-3. 10진법 유니코드 숫자들을 알파벳 소문자 a ~ z로 변환

앞서 ord 내장 함수에서 확인해봤듯이 알파벳 소문자 a ~ z는 유니코드 숫자 97 ~ 122와 연결되어 있습니다.

따라서 chr 내장 함수의 매개변수에 유니코드 숫자인 정수 97 ~ 122를 넣으면

각각 알파벳 소문자 a ~ z로 반환됩니다.

 

밑의 파이썬 코드와 결과는 위의 내용을 확인한 것입니다.

# 10진법 유니코드 숫자 97 ~ 122를 알파벳 소문자 a ~ z로 변환해봅니다.
print("10진법 유니코드 숫자 97을 알파벳 소문자 a로 변환:", chr(97))
print("10진법 유니코드 숫자 98을 알파벳 소문자 b로 변환:", chr(98))
print("10진법 유니코드 숫자 99를 알파벳 소문자 c로 변환:", chr(99))
print("10진법 유니코드 숫자 100을 알파벳 소문자 d로 변환:", chr(100))
print("10진법 유니코드 숫자 101을 알파벳 소문자 e로 변환:", chr(101))
print("10진법 유니코드 숫자 102를 알파벳 소문자 f로 변환:", chr(102))
print("10진법 유니코드 숫자 103을 알파벳 소문자 g로 변환:", chr(103))
print("10진법 유니코드 숫자 104를 알파벳 소문자 h로 변환:", chr(104))
print("10진법 유니코드 숫자 105를 알파벳 소문자 i로 변환:", chr(105))
print("10진법 유니코드 숫자 106을 알파벳 소문자 j로 변환:", chr(106))
print("10진법 유니코드 숫자 107을 알파벳 소문자 k로 변환:", chr(107))
print("10진법 유니코드 숫자 108을 알파벳 소문자 l로 변환:", chr(108))
print("10진법 유니코드 숫자 109를 알파벳 소문자 m으로 변환:", chr(109))
print("10진법 유니코드 숫자 110을 알파벳 소문자 n으로 변환:", chr(110))
print("10진법 유니코드 숫자 111을 알파벳 소문자 o로 변환:", chr(111))
print("10진법 유니코드 숫자 112를 알파벳 소문자 p로 변환:", chr(112))
print("10진법 유니코드 숫자 113을 알파벳 소문자 q로 변환:", chr(113))
print("10진법 유니코드 숫자 114를 알파벳 소문자 r로 변환:", chr(114))
print("10진법 유니코드 숫자 115를 알파벳 소문자 s로 변환:", chr(115))
print("10진법 유니코드 숫자 116을 알파벳 소문자 t로 변환:", chr(116))
print("10진법 유니코드 숫자 117을 알파벳 소문자 u로 변환:", chr(117))
print("10진법 유니코드 숫자 118을 알파벳 소문자 v로 변환:", chr(118))
print("10진법 유니코드 숫자 119를 알파벳 소문자 w로 변환:", chr(119))
print("10진법 유니코드 숫자 120을 알파벳 소문자 x로 변환:", chr(120))
print("10진법 유니코드 숫자 121을 알파벳 소문자 y로 변환:", chr(121))
print("10진법 유니코드 숫자 122를 알파벳 소문자 z로 변환:", chr(122))

10진법 유니코드 숫자 97 ~ 122를 알파벳 소문자 a ~ z로 변환

 

1-3-4. 10진법 유니코드 숫자들을 한글 및 특수문자로 변환

앞서 ord 내장 함수 포스팅에서 공백, 한글, 특수문자들의 일부분을 유니코드 숫자들로 변환해봤습니다.

 

밑의 파이썬 코드와 결과는 ord 내장 함수 포스팅에서 알아본 유니코드 숫자들을

chr 내장 함수 매개변수에 넣어본 결과입니다.

# 10진법 유니코드 숫자들을 해당하는 공백, 한글, 특수문자로 변환해봅니다.
print("10진법 유니코드 숫자 32를 공백 ' '으로 변환:", chr(32))
print("------------------------------------------------------")
print("10진법 유니코드 숫자 44032를 한글 '가'로 변환:", chr(44032))
print("10진법 유니코드 숫자 45208을 한글 '나'로 변환:", chr(45208))
print("10진법 유니코드 숫자 45796을 한글 '다'로 변환:", chr(45796))
print("10진법 유니코드 숫자 46972를 한글 '라'로 변환:", chr(46972))
print("10진법 유니코드 숫자 47560을 한글 '마'로 변환:", chr(47560))
print("10진법 유니코드 숫자 48731을 한글 '빛'으로 변환:", chr(48731))
print("10진법 유니코드 숫자 48164를 한글 '밤'으로 변환:", chr(48164))
print("10진법 유니코드 숫자 54616을 한글 '하'로 변환:", chr(54616))
print("10진법 유니코드 숫자 45720을 한글 '늘'로 변환:", chr(45720))
print("10진법 유니코드 숫자 48660을 한글 '블'로 변환:", chr(48660))
print("10진법 유니코드 숫자 47196을 한글 '로'로 변환:", chr(47196))
print("10진법 유니코드 숫자 44536을 한글 '그'로 변환:", chr(44536))
print("------------------------------------------------------")
print("10진법 유니코드 숫자 96을 특수문자 백틱 '`'으로 변환:", chr(96))
print("10진법 유니코드 숫자 126을 특수문자 물결표 '~'로 변환:", chr(126))
print("10진법 유니코드 숫자 33을 특수문자 느낌표 '!'로 변환:", chr(33))
print("10진법 유니코드 숫자 64를 특수문자 골뱅이 '@'로 변환:", chr(64))
print("10진법 유니코드 숫자 35를 특수문자 샵 '#'으로 변환:", chr(35))
print("10진법 유니코드 숫자 36을 특수문자 달러 '$'로 변환:", chr(36))
print("10진법 유니코드 숫자 37를 특수문자 퍼센트 '%'로 변환:", chr(37))

10진법 유니코드 숫자들을 공백, 한글, 특수문자로 변환

 

 

 

 

 

 

 

 

1-3-5. 10진법 외 다른 진법 숫자 형태의 유니코드 숫자를 chr 내장 함수의 매개변수에 넣은 경우

위의 1-1. 사용법과 결과에서 chr 내장 함수의 매개변수에는 10진법 숫자말고도

2진법, 8진법, 16진법의 숫자도 넣을 수 있다고 했습니다.

2진법, 8진법, 16진법 숫자의 유니코드 숫자들을 chr 내장 함수의 매개변수에 넣어본 결과를 확인해봤습니다.

 

1-3-5-1. 2진법 숫자의 유니코드 숫자를 chr 내장 함수의 매개변수에 넣은 경우

밑의 파이썬 코드와 결과는 chr 내장 함수에 2진법 숫자의 유니코드 숫자들을 넣어본 것입니다.

# 2진법 숫자의 유니코드 숫자들을 chr 내장 함수의 매개변수에 넣어봅니다.
print("10진법 48을 2진법으로 변환한 결과:", bin(48))
print("2진법 숫자 110000을 문자로 변환:", chr(0b110000))
print("10진법 49를 2진법으로 변환한 결과:", bin(49))
print("2진법 숫자 110001을 문자로 변환:", chr(0b110001))
print("10진법 50을 2진법으로 변환한 결과:", bin(50))
print("2진법 숫자 110010을 문자로 변환:", chr(0b110010))
print("---------------------------------------------")
print("10진법 65를 2진법으로 변환한 결과:", bin(65))
print("2진법 숫자 1000001을 문자로 변환:", chr(0b1000001))
print("10진법 66을 2진법으로 변환한 결과:", bin(66))
print("2진법 숫자 1000010을 문자로 변환:", chr(0b1000010))
print("10진법 67을 2진법으로 변환한 결과:", bin(67))
print("2진법 숫자 1000011을 문자로 변환:", chr(0b1000011))
print("----------------------------------------------------------")
print("10진법 44032를 2진법으로 변환한 결과:", bin(44032))
print("2진법 숫자 1010110000000000을 문자로 변환:", chr(0b1010110000000000))
print("10진법 45208을 2진법으로 변환한 결과:", bin(45208))
print("2진법 숫자 1011000010011000을 문자로 변환:", chr(0b1011000010011000))
print("10진법 45796을 2진법으로 변환한 결과:", bin(45796))
print("2진법 숫자 1011001011100100을 문자로 변환:", chr(0b1011001011100100))

chr 내장 함수의 매개변수에 2진수 숫자의 유니코드 숫자들을 넣은 결과

 

1-3-5-2. 8진법 숫자의 유니코드 숫자를 chr 내장 함수의 매개변수에 넣은 경우

밑의 파이썬 코드와 결과는 chr 내장 함수에 8진법 숫자의 유니코드 숫자들을 넣어본 것입니다.

# 8진법 숫자의 유니코드 숫자들을 chr 내장 함수의 매개변수에 넣어봅니다.
print("10진법 48을 8진법으로 변환한 결과:", oct(48))
print("8진법 숫자 60을 문자로 변환:", chr(0o60))
print("10진법 49를 8진법으로 변환한 결과:", oct(49))
print("8진법 숫자 61을 문자로 변환:", chr(0o61))
print("10진법 50을 8진법으로 변환한 결과:", oct(50))
print("8진법 숫자 62를 문자로 변환:", chr(0o62))
print("---------------------------------------------")
print("10진법 65를 8진법으로 변환한 결과:", oct(65))
print("8진법 숫자 101을 문자로 변환:", chr(0o101))
print("10진법 66을 8진법으로 변환한 결과:", oct(66))
print("8진법 숫자 102를 문자로 변환:", chr(0o102))
print("10진법 67을 8진법으로 변환한 결과:", oct(67))
print("8진법 숫자 103을 문자로 변환:", chr(0o103))
print("----------------------------------------------------------")
print("10진법 44032를 8진법으로 변환한 결과:", oct(44032))
print("8진법 숫자 126000을 문자로 변환:", chr(0o126000))
print("10진법 45208을 8진법으로 변환한 결과:", oct(45208))
print("8진법 숫자 130230을 문자로 변환:", chr(0o130230))
print("10진법 45796을 8진법으로 변환한 결과:", oct(45796))
print("8진법 숫자 131344를 문자로 변환:", chr(0o131344))

chr 내장 함수의 매개변수에 8진수 숫자의 유니코드 숫자들을 넣은 결과

 

1-3-5-3. 16진법 숫자의 유니코드 숫자를 chr 내장 함수의 매개변수에 넣은 경우

밑의 파이썬 코드와 결과는 chr 내장 함수에 16진법 숫자의 유니코드 숫자들을 넣어본 것입니다.

# 8진법 숫자의 유니코드 숫자들을 chr 내장 함수의 매개변수에 넣어봅니다.
print("10진법 48을 16진법으로 변환한 결과:", hex(48))
print("16진법 숫자 30을 문자로 변환:", chr(0x30))
print("10진법 49를 16진법으로 변환한 결과:", hex(49))
print("16진법 숫자 31을 문자로 변환:", chr(0x31))
print("10진법 50을 16진법으로 변환한 결과:", hex(50))
print("16진법 숫자 32를 문자로 변환:", chr(0x32))
print("---------------------------------------------")
print("10진법 65를 16진법으로 변환한 결과:", hex(65))
print("16진법 숫자 41을 문자로 변환:", chr(0x41))
print("10진법 66을 16진법으로 변환한 결과:", hex(66))
print("16진법 숫자 42를 문자로 변환:", chr(0x42))
print("10진법 67을 16진법으로 변환한 결과:", hex(67))
print("16진법 숫자 43을 문자로 변환:", chr(0x43))
print("---------------------------------------------")
print("10진법 44032를 16진법으로 변환한 결과:", hex(44032))
print("16진법 숫자 ac00을 문자로 변환:", chr(0xac00))
print("10진법 45208을 16진법으로 변환한 결과:", hex(45208))
print("16진법 숫자 b098을 문자로 변환:", chr(0xb098))
print("10진법 45796을 16진법으로 변환한 결과:", hex(45796))
print("16진법 숫자 b2e4를 문자로 변환:", chr(0xb2e4))

chr 내장 함수의 매개변수에 16진수 숫자의 유니코드 숫자들을 넣은 결과

 

1-3-6. chr 내장 함수의 매개변수에 숫자 형태의 유니코드 대신 다른 자료형의 값을 넣은 경우

chr 내장 함수의 매개변수에 정수형의 유니코드 숫자값 대신 문자를 넣으면

밑의 결과와 같이 chr 내장 함수의 매개변수에는 정수형 숫자를 넣으라는 TypeError 오류가 발생합니다.

# chr 내장 함수의 매개변수에 정수형 숫자인 유니코드 대신 문자를 넣어봅니다.
print("chr 내장 함수에 정수형 숫자 형태인 유니코드 대신 문자를 넣은 결과:", chr('0'))

chr 내장 함수의 매개변수에 정수형 숫자 형태의 유니코드 대신 문자를 넣은 결과

 

chr 내장 함수의 매개변수에 정수형의 유니코드 숫자값 대신 실수형 숫자를 넣으면

밑의 결과와 같이 chr 내장 함수의 매개변수에는 정수형 숫자를 넣으라는 TypeError 오류가 발생합니다.

# chr 내장 함수의 매개변수에 정수형 숫자인 유니코드 대신 실수형 숫자를 넣어봅니다.
print("chr 내장 함수에 정수형 숫자 형태인 유니코드 대신 실수형 숫자를 넣은 결과:", chr(1.2))

chr 내장 함수의 매개변수에 정수형 숫자 형태의 유니코드 대신 실수형 숫자를 넣은 결과

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

반응형

댓글