본 포스팅은 <파이썬 코딩의 기술 (개정 2판)> 책을 공부하고 정리한 내용입니다.
파이썬의 문자 시퀀스
파이썬의 문자 시퀀스를 나타내는 방시은 유니코드 문자열 방식과 bytes(raw 8bit) 형식 2가지이다.
- 파이썬 3은 문자는 str, bytes는 bytes 클래스로 표현
- 파이썬 2는 문자는 Unicode, bytes는 str 클래스로 표현한다.
위와 같기 때문에, 파이썬 2와 파이썬 3을 섞어 쓸 때는 조심해야 한다.
bytes ?
bytes 인스턴스는 문자열 앞에 b를 붙여서 생성한다. ex : b'\x41'
bytes는 ascii상수로 이루어져 있다. 위 예를 디코딩하기 위해 해석해보면 '\x'가 나타내는 것은 이 코드는 hexa의 표현이라는 것이다. 그럼 10진수로 '\x41'은 몇일까? 65이다. 이제 65를 아스키 코드로 디코딩하면 된다.('A'의 ASCII가 65)
그렇기 때문에 위 b'\x41'은 디코딩하면 b'A'가 나올 것이다.
str과 bytes 간의 변환
- str -> bytes : str의 encode 메소드 사용
- bytes -> str : bytes의 decode 메소드 사용
Ubuntu기준으로 encoding, decoding은 모두 기본 인코딩인 'utf-8'을 사용하며, CP949'등 다른 인코딩을 사용하려면 메소드에 인자를 주면 된다.
'a'.encode(encoding='CP949') # 1
b'/x4r5'.decode('CP949') # 2
정리
- bytes에는 8비트 시퀀스가 들어있고, str에는 유니코드 코드 포인트의 시퀀스가 들어있다.
- 처리할 입력이 원하는 문자 시퀀스(8비트 값인지, UTF-8로 인코딩 된 문자열인지, 유니코드 코드 포인트들)인지 확인하려면 help함수를 이용하라
- bytes와 str인스턴스를 (>,==,+,%)연산자에서 사용할 수 없다
- 이진 데이터 파일에서 읽거나 파일에 쓰고 싶으면 항상 이진 모드('rb', 'wb')f로 파일을 열면된다.
- 유니코드 데이터를 파일에서 읽거나 파일에 쓰고 싶을 때 시스템 디폴트 인코딩에 encoding parameter를 명시적으로 전달하라
2023.12.09 - [Python/Effective python] - [Python] 02. PEP8 스타일 가이드를 따르라
[[Python] 02. PEP8 스타일 가이드를 따르라
본 포스팅은 책을 공부하고 정리한 내용입니다. PEP란? Python Enhancement Proposal 의 약자이다. 번역하면 파이썬 개선 제안서,,, 무슨 말이냐면 그냥.. 파이썬 코드를 어떻게 구성할지 정해주는 스타일
rabo0313.tistory.com](https://rabo0313.tistory.com/entry/Python-02-PEP8-%EC%8A%A4%ED%83%80%EC%9D%BC-%EA%B0%80%EC%9D%B4%EB%93%9C%EB%A5%BC-%EB%94%B0%EB%A5%B4%EB%9D%BC)
'Python > Effective python' 카테고리의 다른 글
[Python] 02. PEP8 스타일 가이드를 따르라 (0) | 2023.12.09 |
---|---|
[Python] 01. 사용중인 파이썬의 버전을 알자 (0) | 2023.12.09 |