|
| 1 | +--- |
| 2 | +date: 2025-06-20 |
| 3 | +category: [Python 문법 정리] |
| 4 | +published: true |
| 5 | +fixed: false |
| 6 | +--- |
| 7 | + |
| 8 | +> 데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스 |
| 9 | +
|
| 10 | +지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다. |
| 11 | +2부부터는 실제 문제 적용을 다룰 것이다. |
| 12 | + |
| 13 | +이 장에서는 데이터 길들이기에 대한 실용적인 기술을 배운다. |
| 14 | +이것을 데이터 먼징(data munging) 또는 ETL(추출, 변형, 로드)라고 부른다. |
| 15 | +프로그래밍 서적은 일반적으로 이러한 주제를 명시적으로 다루지 않지만, 개발자들은 목적에 따라 데이터를 올바른 형태로 만드는 데 많은 시간을 소비한다. |
| 16 | + |
| 17 | +데이터 형식을 크게 텍스트(text)와 2진수(binary)로 나눌 수 있다. |
| 18 | +텍스트 데이터(text data)는 파이썬 문자열(string)을 사용한다. |
| 19 | + |
| 20 | +첫 번째로 지금까지 살펴보지 않은 문자열 정보를 다룬다. |
| 21 | +- 유니코드 문자 |
| 22 | +- 정규 표현식 패턴 매칭 |
| 23 | + |
| 24 | +두 번째로 이진 데이터와 두 가지 파이썬 내장 타입을 살펴본다. |
| 25 | +- 불변 8비트 값의 바이트 |
| 26 | +- 가변 값의 바이트 배열 |
| 27 | + |
| 28 | +=> "아니 텍스트도 2진수 아닌가?" 라는 질문에 대한 답은 **"네, 맞습니다"** 입니다. 컴퓨터에 저장되는 모든 데이터는 궁극적으로 0과 1의 조합인 2진수(바이너리)입니다. |
| 29 | + |
| 30 | +그렇다면 왜 '텍스트'와 '이진' 데이터를 구분할까요? 이는 데이터를 **어떻게 해석하고 다룰 것인가**에 대한 실용적인 구분입니다. |
| 31 | + |
| 32 | +- **텍스트 데이터(Text Data)**: 0과 1의 나열이지만, **정해진 규칙(인코딩, 예: UTF-8, ASCII)에 따라 인간이 읽을 수 있는 '문자'로 해석**하기로 약속된 데이터입니다. 파이썬의 `string` 타입이 바로 이것을 다룹니다. 예를 들어, 2진수 `01000001`은 'A'라는 문자로 해석됩니다. |
| 33 | +- **이진 데이터(Binary Data)**: 이미지 파일(JPEG), 실행 파일(EXE), 동영상(MP4)처럼 **문자로 해석되지 않는 모든 종류의 데이터**를 의미합니다. 이 데이터들은 각 파일 형식의 고유한 구조에 따라 해석되어야 합니다. 파이썬의 `bytes` 타입이 이런 데이터를 다룹니다. |
| 34 | +'텍스트'와 '이진'의 구분은 물리적인 차이가 아니라, 그것을 사용하는 **프로그램과 사람의 해석 방식에 따른 논리적인 구분**입니다. |
| 35 | + |
| 36 | +## 텍스트 문자열: 유니코드 |
| 37 | +5장에서 파이썬 문자열 기본을 배웠다. |
| 38 | +이제 유니코드를 배워볼 차례다. |
| 39 | +파이썬 3의 문자열은 바이트 배열이 아닌 유니코드 문자 시퀀스다. |
| 40 | +이것은 파이썬 2에서 파이썬 3의 가장 큰 변화다. |
| 41 | +지금까지 이 책의 모든 텍스트 예제는 평범하고 오래된 아스키 코드(ASCII)를 사용했다. |
| 42 | +컴퓨터의 기본 저장 단위는 바이트(byte)로 8비트(bit)에 256개의 고유한 값을 저장할 수 있다. |
| 43 | +여러 가지 이유로 아스키 코드는 7비트(128개의 고유한 값)만 사용한다. |
| 44 | +각 26개의 대소 문자, 숫자 10개, 문장 부호, 공백 문자, 비인쇄 제어 코드로 구성되어 있다. |
| 45 | + |
| 46 | +슬프게도, 세계에는 아스키 코드가 제공하는 것보다 더 많은 문자가 존재한다. |
| 47 | +파이썬은 많은 문자와 기호를 지원하기 위해 많은 노력을 했다. |
| 48 | +이 책에서 가끔 독특한 문자와 기호를 보게 될 것이다. |
| 49 | +다음은 일부 문자 코드다. |
| 50 | +- Latin-1 or ISO8859-1 |
| 51 | +- Windows code page 1252 |
| 52 | +이들 각 문자는 모두 8비트를 사용하지만, 그것조차도 충분하지 않다. |
| 53 | +심지어 비유럽 국가의 언어는 8비트로 모든 문자를 표현할 수 없다. |
| 54 | +국가별로 독자적인 문자열 인코딩을 사용하는 것을 해결하기 위해, 국제 표준화 기구에서 유니코드를 만들었다. |
| 55 | +유니코드는 수학 및 기타 분야의 기호들도 포함한다. 심지어 이모티콘까지. |
| 56 | + |
| 57 | +> 유니코드는 플랫폼, 프로그램, 언어에 상관없이 문자마다 고유한 번호를 제공한다. - 유니코드 협회 |
| 58 | +
|
| 59 | +유니코드 코드 차트 페이지는 현재 정의된 모든 문자 집합과 이미지에 대한 링크를 제공한다. |
| 60 | +가장 최신 버전 12.0은 문자 137,000개를 정의한다. |
| 61 | +각 문자는 고유한 이름과 식별 번호가 있다. |
| 62 | +문자들은 유니코드 평면(plane)이라고 하는 8비트의 세트로 분할된다. |
| 63 | +첫 번째 256 평면은 기본 다국어 평면(BMP)이다. |
| 64 | +위키백과의 유니코드 평면에서 자세한 내용을 확인할 수 있다. |
0 commit comments