ord() 및 chr() 을 사용하여 문자와 정수 변환하기
이 단계에서는 내장 Python 함수인 ord()와 chr()을 사용하여 문자와 해당 Unicode 정수 표현 간에 변환하는 방법을 배웁니다.
Python 3 에서는 문자열이 Unicode 를 사용하여 표현됩니다. ord() 함수는 단일 문자를 입력으로 받아 해당 Unicode 십진수 정수 값을 반환합니다.
이 함수들을 실험하기 위해 새로운 Python 파일을 만들어 보겠습니다. WebIDE 에서 파일 탐색기의 project 디렉토리를 마우스 오른쪽 버튼으로 클릭하고 New File을 선택합니다. 파일 이름을 char_conversion.py로 지정합니다.
char_conversion.py를 편집기에서 열고 다음 코드를 추가합니다.
## 문자의 Unicode 십진수 값을 얻기 위해 ord() 사용
char1 = 'a'
char2 = 'é'
char3 = ';'
print(f"'{char1}'의 Unicode 십진수 값은: {ord(char1)}")
print(f"'{char2}'의 Unicode 십진수 값은: {ord(char2)}")
print(f"'{char3}'의 Unicode 십진수 값은: {ord(char3)}")
파일을 저장합니다 (Ctrl + S 또는 macOS 에서는 Cmd + S).
이제 통합 터미널을 다시 열고 (이미 열려 있지 않다면) python 명령을 사용하여 스크립트를 실행합니다.
python char_conversion.py
다음과 유사한 출력이 표시됩니다.
'a'의 Unicode 십진수 값은: 97
'é'의 Unicode 십진수 값은: 233
';'의 Unicode 십진수 값은: 59
chr() 함수는 반대 작업을 수행합니다. Unicode 코드 포인트를 나타내는 십진수 정수 (또는 16 진수 정수) 를 받아 해당 문자를 반환합니다.
chr() 함수를 사용하기 위해 char_conversion.py에 코드를 더 추가해 보겠습니다. 기존 코드에 다음 줄을 추가합니다.
## Unicode 십진수 값에서 문자를 얻기 위해 chr() 사용
int1 = 8364
int2 = 8482
print(f"Unicode 십진수 값 {int1}에 대한 문자는: {chr(int1)}")
print(f"Unicode 십진수 값 {int2}에 대한 문자는: {chr(int2)}")
## chr() 과 함께 16 진수 값도 사용할 수 있습니다.
hex_int = 0x00A9 ## 문자 '©'에 대한 16 진수
print(f"Unicode 16 진수 값 {hex(hex_int)}에 대한 문자는: {chr(hex_int)}")
파일을 다시 저장합니다.
터미널에서 스크립트를 실행합니다.
python char_conversion.py
출력에는 이제 chr() 함수의 결과가 포함됩니다.
'a'의 Unicode 십진수 값은: 97
'é'의 Unicode 십진수 값은: 233
';'의 Unicode 십진수 값은: 59
Unicode 십진수 값 8364에 대한 문자는: €
Unicode 십진수 값 8482에 대한 문자는: ™
Unicode 16진수 값 0xa9에 대한 문자는: ©
문자의 16 진수 Unicode 표현을 찾는 방법을 궁금해할 수 있습니다. ord() 함수를 사용하여 십진수 값을 얻은 다음 내장 hex() 함수를 사용하여 십진수 값을 해당 16 진수 문자열 표현으로 변환할 수 있습니다.
char_conversion.py에 다음 코드를 추가합니다.
## 문자를 16 진수 Unicode 표현으로 변환
char_copyright = '©'
decimal_copyright = ord(char_copyright)
hexadecimal_copyright = hex(decimal_copyright)
print(f"'{char_copyright}'의 16 진수 Unicode 값은: {hexadecimal_copyright}")
파일을 저장하고 마지막으로 한 번 더 실행합니다.
python char_conversion.py
최종 출력에는 문자 '©'에 대한 16 진수 값이 포함됩니다.
'a'의 Unicode 십진수 값은: 97
'é'의 Unicode 십진수 값은: 233
';'의 Unicode 십진수 값은: 59
Unicode 십진수 값 8364에 대한 문자는: €
Unicode 십진수 값 8482에 대한 문자는: ™
Unicode 16진수 값 0xa9에 대한 문자는: ©
'©'의 16진수 Unicode 값은: 0xa9
이를 통해 Python 에서 ord(), chr(), hex()를 함께 사용하여 문자 인코딩을 다루는 방법을 알 수 있습니다.