기본 문자열 파싱이 실패하는 경우
CSV 파일에서 기본 문자열 파싱이 실패할 수 있는 한 가지 경우는 열의 값 내부에 구분자인 쉼표가 포함되어 있는 경우이다. supplier_data.csv를 열고 Cost 열의 마지막 두 행을 각각 $6,015.00 및 $1,006,015.00으로 바꿔보자. 이렇게 바꾼 입력 파일은 [그림 2-7]과 같이 보일 것이다.
[그림 2-7] 값을 수정한 supplier_data.csv 파일
위와 같이 입력 파일을 변경하고 저장한 후, 파싱 스크립트가 어떻게 실패하는지 확인하기 위해 스크립트를 다시 실행해보자. 즉, 명령 줄에서 키보드 위쪽 방향키를 눌러 방금 실행한 이전 명령을 복구하거나 다음 명령을 다시 입력하고 엔터 키를 누른다. [그림 2-8]과 같은 결과가 화면에 출력되어야 한다.
python 1csv_simple_parsing_and_write.py supplier_data.csv 1output.csv
[그림 2-8] 변경된 supplier_data.csv 파일에 스크립트를 실행한 결과
알다시피 이 스크립트는 쉼표를 기반으로 각 행을 파싱하게 되어 있다. 스크립트는 헤더 행과 처음 10개의 행에는 데이터 값에 쉼표가 포함되어 있지 않으므로 올바르게 실행된다. 하지만 마지막 두 행에는 데이터 값 자체에 쉼표가 포함되어 있으므로 파싱이 실패할 것이다.
쉼표가 포함된 값을 처리하기 위해 이 스크립트의 코드를 개선하는 방법은 여러 가지가 있다. 예를 들어 정규 표현식을 사용하여 $6,015.00 및 $1,006,015.00과 같이 쉼표가 포함된 문자열 패턴을 검색한 다음 행을 파싱하기 전에 쉼표를 제거할 수 있다. 그러나 스크립트를 복잡하게 만드는 대신 파이썬에 내장된 csv 모듈을 사용할 수도 있다. 이 모듈은 임의적이고 복잡한 CSV 파일을 처리하도록 설계되어 있다.
이전 글 : 파이썬 데이터 분석 입문 02, CSV 파일
최신 콘텐츠