728x90
반응형
1. 개요
파이썬에서는 문자열 데이터의 시퀀스를 표현하는 두 가지 타입이 있음 -> bytes와 str
2. 차이
bytes는 다음과 같이 부호가 없는 8바이트 데이터가 그대로 들어간다.
a = b'h\x65llo'
print(list(a))
print(a)
>>>
[104, 101, 108, 108, 111]
b'hello'
str은 문자를 표현하는 유니코드 코드 포인트가 들어 있다.
a = 'a\u0300 propos'
print(list(a))
print(a)
>>>
['a', '`', ' ', 'p', 'r', 'o', 'p', 'o', 's']
à propos
3. Tip
3-1. 타입 변환 함수 작성하기
처리할 입력이 원하는 문자 시퀀스를 반환하도록 함수를 작성한다.
def to_str(bytes_or_str):
if isinstance(bytes_or_str, bytes):
value = bytesj_or_str.decode('utf-8')
else:
value = bytes_or_str
return value # str 시퀀스
def to_bytes(bytes_or_str):
if isinstance(bytes_or_str, str):
value =bytes_or_str.encode('utf-8')
else:
value = bytes_or_str
return value # bytes 인스턴스
3-2. 연산자 사용
bytes와 str은 서로 호환되지 않아서 연산자에 섞어서 사용할 수 없다. 일례로, bytes와 str 인스턴스가 같은지 비교하면 항상 False가 나온다.
print(b'foo' == 'foo')
>>>
False
3-3. 이진 데이터 읽고 쓰기
형식이 다르므로 이진 데이터를 파일에서 읽거나 쓰고 싶으면 항상 이진 모드 ('rb' 나 'wb')로 파일을 열자.
3-4. 유니코드 데이터 읽고 쓰기
인코딩 파라미터를 명시적으로 전달해야한다.
728x90
반응형