Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python 3에서 문자열을 바이트(bytes)로 변환하는 방법 완벽 가이드

Python 3에서 문자열을 바이트로 변환하는 방법

Python 3에서는 문자열(str) 객체가 제공하는 encode() 메서드를 사용하여 문자열을 바이트(bytes) 객체로 손쉽게 변환할 수 있습니다. encode() 메서드는 인코딩 방식을 인자로 받으며, 지정하지 않으면 기본값인 utf-8이 적용됩니다.

기본 사용 예제

>>> s = u"HellΘ WΘrld"
>>> s.encode('utf-8')
b'Hell\xce\x98 W\xce\x98rld'

위 예제에서 그리스 문자 Θ(세타)는 ASCII 범위를 벗어나는 문자이므로, UTF-8로 인코딩될 때 각각 \xce\x98라는 두 개의 바이트로 표현되는 것을 확인할 수 있습니다. 결과 앞에 붙은 b 접두사는 해당 객체가 문자열이 아닌 바이트 객체임을 나타냅니다.

다양한 인코딩 방식 활용하기

encode() 메서드는 UTF-8 외에도 여러 인코딩 방식을 지원합니다. 한글 처리 예시는 다음과 같습니다.

>>> s = "안녕하세요"
>>> s.encode('utf-8')
b'\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94'
>>> s.encode('euc-kr')
b'\xbe\xc8\xb3\xe7\xc7\xcf\xbc\xbc\xbf\xe4'

바이트를 다시 문자열로 변환하기

반대로 바이트 객체를 문자열로 되돌리려면 decode() 메서드를 사용하면 됩니다.

>>> b = b'Hell\xce\x98 W\xce\x98rld'
>>> b.decode('utf-8')
'HellΘ WΘrld'

주의할 점은 인코딩과 디코딩 시 반드시 동일한 인코딩 방식을 사용해야 한다는 것입니다. 서로 다른 인코딩을 혼용하면 UnicodeDecodeError가 발생하거나 데이터가 깨질 수 있습니다.