【Ruby】Ruby로 CSV 형식의 데이터를 읽고 쓰고 싶을 때

3615 단어 CSV루비Rails

개요



Ruby에서 csv 파일을 읽고 새로 내보낼 수있게하고 싶었습니다.
Gem을 이용해도 구현할 수 있지만, 굳이 Ruby만으로 구현했다.

절차



1. 테스트 데이터 획득



테스트를 위해 우편번호 데이터의 「도쿄」의 csv 파일로 테스트합니다.

◇우편번호 데이터



2. 사용할 라이브러리



CSV 형식 파일을 사용하려면 표준 라이브러리 csv를 사용하는 것이 편리합니다.
◇csv 라이브러리
htps : // / cs. 루 by ぁん g. 오 rg / 그럼 / st / bb 등 ry / CSV. HTML

이번에 사용하는 13TOKYO.csv 는 Shift-JIS로 인코딩되어 있으므로 이후의 처리에 불편함이 있을지도 모르기 때문에 Shift-JIS 에서 UTF-8 로 변경합니다.
◇kconv 라이브러리
htps : // / cs. 루 by ぁん g. 오 rg / 자 / ㅁ st / ぃ b 등 ry / k 곤 v. HTML

CSV 파일을 읽고 다른 CSV 파일로 내보내는 코드


require 'csv'
require 'kconv'

row_o = Array.new
# 東京の郵便番号データを読み出し
# Shift-JISからUTF-8に変換しています。
# 配列に小笠原村が含まれる情報のみ抜き出しています。
open('13TOKYO.csv').each do |row|
  row = CSV.parse_line(Kconv::kconv(row, Kconv::UTF8, Kconv::SJIS))
  if row.include?('小笠原村')
    row_o << row.compact
  end
end

# output.csvに読み出した情報を書き出しています。
CSV.open('output.csv', 'w') do |write|
  row_o.each do |i|
    write << i
  end
end

내보낸 CSV





요약



Rails의 Gem이 아닌 Ruby의 표준 라이브러리로 구현할 수 있었다.include? 안을 변수로 하면 여러가지 대응할 수 있을 것 같다.

좋은 웹페이지 즐겨찾기