CSV 클래스

CSV 클래스

CSV(comma-separated values, 쉼표로 구분된 값)는 표를 텍스트로 표현하는 한 방식이에요. 행 구분자(row separator)가 표의 행을 나누고(보통 줄바꿈 \n), 열 구분자(column separator)가 행 안의 필드들을 나눈다고 보시면 돼요(보통 쉼표 ,).

예를 들어 아래 CSV 문자열은 행 구분자 \n과 열 구분자 ,를 쓰고, 세 개의 행과 두 개의 열을 가집니다.

"foo,0\nbar,1\nbaz,2\n"

이름이 CSV라서 그렇지, CSV 표현은 꼭 쉼표만 쓰는 건 아니에요. 구분자를 바꿔서 쓸 수도 있어요.

출처: Ruby 3.3 API

본문

Class CSV

CSV 클래스는 다음과 같은 일들을 해 줍니다.

  • String 객체, File(파일 경로로), 또는 IO 객체에서 CSV 데이터를 파싱하기
  • CSV 데이터를 String 객체로 생성하기

CSV를 사용하려면 먼저 불러와야 해요.

require 'csv'

여기 있는 모든 예제는 이 불러오기가 이미 되어 있다고 가정할게요.

Keeping It Simple

CSV 객체는 파싱과 생성을 세밀하게 제어해 주는 수십 개의 인스턴스 메서드를 갖고 있어요. 하지만 많은 경우엔 더 간단한 방법으로 충분합니다.

이 절에서는 CSV의 싱글턴 메서드(singleton methods)를 요약해요. 이 메서드들은 CSV 객체를 명시적으로 만들지 않고도 파싱과 생성을 할 수 있게 해 줍니다.

Simple Parsing

파싱 메서드는 보통 다음 중 하나를 반환합니다.

  • 각 행을 배열로 담은 배열
  • CSV::Table 객체
  • 행마다 블록을 호출하는 방식

Simple Generating

생성 메서드는 String 객체를 반환하거나, 블록으로 CSV 객체를 받아 그 안에서 행을 추가하는 방식으로 동작해요.

CSV로 표 만들기

CSV.new로 파서/생성기 객체를 만들면 여러 옵션(구분자, 헤더 처리, 인코딩 등)을 지정해 세밀한 제어를 할 수 있어요. CSV.table 등 편의 메서드는 파일을 읽어 표 형태로 바로 다루기 좋아요.

더 알아보기 (Learn more)

  • CSV#each, CSV#read, CSV#shift 등 행 단위 처리 메서드
  • CSV.generate, CSV.parse, CSV.read 같은 클래스 레벨 편의 메서드