파이썬 - 유니코드 시스템

안녕하세요, 미래의 파이썬 마법사들! 오늘은 파이썬에서 유니코드의 흥미로운 세계로 여행을 떠나보겠습니다. 유니코드라는 단어를 들어본 적이 없다고 해도 걱정 마세요. 이 튜토리얼을 끝내면 당신은 전문가처럼 텍스트를 다루게 될 거예요!

Python - Unicode System

유니코드 시스템이란?

자신의 펜팔로에게 일본에 편지를 쓰려고 하지만 키보드에는 영문자만 있다면 어떤가요? 짜증 나지 않나요? 이때 유니코드가 구조를 나타나요!

유니코드는 세상의 모든 언어 시스템의 모든 문자에 고유한 번호(코드 포인트라고 부릅니다)를 할당하는 거대한 사전입니다. 이는 단순히 문자와 숫자에 끝나는 것이 아니라 문장 부호, 기호, 심지어 이모지까지 포함합니다! ?

예를 들어:

  • 문자 'A'는 코드 포인트 U+0041을 가집니다
  • 기호 '©'는 코드 포인트 U+00A9를 가집니다
  • 이모지 '?'는 코드 포인트 U+1F60A를 가집니다

왜 우리가 유니코드를 필요로 해야 하나요?

유니코드 이전에는 서로 다른 언어에 대해 서로 다른 인코딩 시스템이 사용되어 있었습니다. 이는 컴퓨터 시스템 간에 데이터를 공유할 때 혼란과 오류를 유발하는 경우가 많았습니다. 유니코드는 이 문제를 해결하기 위해 범용 표준을 제공했습니다.

문자 인코딩

이제 유니코드가 무엇인지 이해했으니, 문자 인코딩에 대해 이야기해보겠습니다. 이는 유니코드 코드 포인트를 컴퓨터가 저장하고 처리할 수 있는 형식으로 번역하는 과정이라고 생각해볼 수 있습니다.

UTF-8: 가장 일반적인 인코딩

UTF-8은 가장 널리 사용되는 인코딩 시스템입니다. 이는 모든 유니코드 문자를 나타내면서도 오래된 ASCII(과거의 인코딩 시스템)와 역호환되는 훌륭한 패킹 시스템입니다.

파이썬이 UTF-8을 어떻게 처리하는지 살펴보겠습니다:

# 문자열을 UTF-8로 인코딩
text = "Hello, 世界!"
encoded_text = text.encode('utf-8')
print(encoded_text)  # b'Hello, \xe4\xb8\x96\xe7\x95\x8c!'

# UTF-8를 문자열로 디코딩
decoded_text = encoded_text.decode('utf-8')
print(decoded_text)  # Hello, 世界!

이 예제에서는 우리의 다국어 문자열을 먼저 UTF-8로 인코딩합니다. 출력에서 b 접두사는 바이트 객체임을 나타냅니다. 이를 다시 디코딩하면 원래 문자열을 얻게 됩니다.

파이썬의 유니코드 지원

파이썬의 큰 장점 중 하나는 뛰어난 유니코드 지원입니다. 파이썬 3에서는 모든 문자열이 기본적으로 유니코드입니다. 이는 특별한 처리 없이 서로 다른 언어의 문자를 자유롭게 혼합할 수 있음을 의미합니다!

유니코드 문자열 생성

# 간단한 유니코드 문자열
hello_world = "Hello, 世界!"
print(hello_world)  # Hello, 世界!

# 유니코드 이스케이프 시퀀스 사용
smiley = "\U0001F60A"
print(smiley)  # ?

두 번째 예제에서는 이모지 스마일리를 나타내기 위해 유니코드 이스케이프 시퀀스를 사용했습니다. \U는 파이썬에게 그 뒤가 유니코드 코드 포인트임을 알려줍니다.

파이썬에서 유니코드 작업

더 많은 유니코드 연산을 탐구해보겠습니다:

# 문자의 유니코드 코드 포인트 가져오기
print(ord('A'))  # 65
print(ord('世'))  # 19990

# 유니코드 코드 포인트에서 문자 가져오기
print(chr(65))  # A
print(chr(19990))  # 世

# 문자열 길이
mixed_string = "Hello, 世界!"
print(len(mixed_string))  # 9 (참고: 世와 界는 단일 문자로 칩니다)

ord() 함수는 문자의 유니코드 코드 포인트를 가져오고, chr()는 반대의 역할을 합니다. len()가 중국어 문자를 단일 단위로 세는 것을 알 수 있습니다.

파일에서 유니코드 처리

유니코드 텍스트가 포함된 파일을 작업할 때는 항상 인코딩을 지정하는 것을 기억하세요:

# 유니코드를 파일에 쓰기
with open('unicode_file.txt', 'w', encoding='utf-8') as f:
f.write("Hello, 世界!")

# 파일에서 유니코드 읽기
with open('unicode_file.txt', 'r', encoding='utf-8') as f:
content = f.read()
print(content)  # Hello, 世界!

encoding='utf-8'를 지정함으로써 우리의 유니코드 텍스트가 파일에 올바르게 쓰이고 읽히도록 确保합니다.

파이썬의 유니코드 메서드

파이썬은 유니코드 문자열 작업에 유용한 여러 메서드를 제공합니다.以下는 일부를 요약한 표입니다:

메서드 설명 예제
isalpha() 문자열의 모든 문자가 알파벳이면 True 반환 "Hello".isalpha() # True
isnumeric() 문자열의 모든 문자가 숫자면 True 반환 "123".isnumeric() # True
isalnum() 문자열의 모든 문자가 알파벳 또는 숫자면 True 반환 "Hello123".isalnum() # True
islower() 문자열의 모든 대소문자가 소문자이면 True 반환 "hello".islower() # True
isupper() 문자열의 모든 대소문자가 대문자이면 True 반환 "HELLO".isupper() # True
istitle() 문자열이 제목형식이면 True 반환 "Hello World".istitle() # True

이 메서드들은 유니코드 문자열을 검증하거나 분류할 때 특히 유용합니다.

결론

축하합니다! 파이썬에서 유니코드의 흥미로운 세계로 첫 걸음을 내딛었습니다. 기억해두세요, 서로 다른 언어와 시스템에서 텍스트를 다루는 것은 우리의 상호 연결된 세상에서 중요한 기술입니다. 파이썬은 이를 정말 쉽게 만듭니다.

파이썬 여행을 계속하면서 이 유니코드에 대한 이해는 웹 스크래핑부터 데이터 분석까지 많은 상황에서 유용하게 사용될 것입니다. 연습을 계속하고, 곧 이모지와 이국적인 스크립트를 마치 진정한 파이썬 마법사처럼 다루게 될 거예요! ?✨

Credits: Image by storyset