반응형
롯데V3
롯데 우승하는 그날까지 개발...ing
롯데V3
전체 방문자
오늘
어제
  • 분류 전체보기 (216)
    • Computer Science (0)
      • 운영체제 (0)
    • Problem Solving (160)
      • 프로그래머스 (93)
      • 백준 (60)
      • 리트코드 (2)
      • SQL (5)
    • 언어 (8)
      • 파이썬 (8)
    • 취준 (1)
      • 합격후기 (1)
    • 도서 리뷰 (21)
      • IT 도서 리뷰 (20)
      • 기타 도서 리뷰 (1)
    • 논문 리뷰 (1)
    • 회고 (5)
      • TIL (5)
    • 머신러닝 (9)
      • 통계 (3)
      • 전처리 (1)
      • 클러스터링 (3)
    • 딥러닝 (3)
      • 자연어처리 (1)
      • LLM (1)
    • 프로젝트 (5)
    • Util (0)
    • Tool (1)
      • Poetry (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 티스토리챌린지
  • DP

최근 댓글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
롯데V3

롯데 우승하는 그날까지 개발...ing

언어/파이썬

[Effective Python] BETTER WAY 3 - bytes와 str의 차이를 알아두라

2022. 12. 24. 18:01
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
반응형
저작자표시 (새창열림)

'언어 > 파이썬' 카테고리의 다른 글

[Effective Python] BETTER WAY 9 - for나 while 루프 뒤에 else 블록을 사용하지 말라  (0) 2022.12.31
[Effective Python] BETTER WAY 7 - range보다는 enumerate를 사용하라  (0) 2022.12.29
[Effective Python] BETTER WAY 6 - 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹해라  (0) 2022.12.29
[Effective Python] BETTER WAY 5 - 복잡한 식을 쓰는 대신 도우미 함수를 작성하라  (0) 2022.12.28
[Effective Python] BETTER WAY 4 - C 스타일 형식 문자열을 str.format과 쓰기보다는 f-문자열을 통한 인터폴레이션을 사용하라  (0) 2022.12.28
    '언어/파이썬' 카테고리의 다른 글
    • [Effective Python] BETTER WAY 7 - range보다는 enumerate를 사용하라
    • [Effective Python] BETTER WAY 6 - 인덱스를 사용하는 대신 대입을 사용해 데이터를 언패킹해라
    • [Effective Python] BETTER WAY 5 - 복잡한 식을 쓰는 대신 도우미 함수를 작성하라
    • [Effective Python] BETTER WAY 4 - C 스타일 형식 문자열을 str.format과 쓰기보다는 f-문자열을 통한 인터폴레이션을 사용하라
    롯데V3
    롯데V3

    티스토리툴바