LoginSignup
13
13

More than 5 years have passed since last update.

[小ネタ]RubyでTSVを読み込む

Last updated at Posted at 2016-01-21

個人メモ。
TSVをRubyで読み込んでごにょごにょした時のメモ。

以下のようなコードを書いた。

#! /usr/bin/env ruby

require 'csv'

def check_args
  file = ARGV[0]

  if file.nil? 
    puts "Usage: ./tsv.rb [FILE]"
    exit 1
  end

  unless File.exist?(file)
    puts "[ERROR] Can't read file. File path = #{file}"
    exit 1
  end
end

# main
check_args
file = ARGV[0]

csvDatas = CSV.read(file, col_sep: "\t", headers: false)
csvDatas.each do  |row|
  puts row[0]
  puts row[1]
  # ...
end

はまったポイント1

CSV.read(file, col_sep: "\t", headers: false)で '\t' と書いてしまい、タブ区切りで文字が読み込めなかった。

Rubyではシングルクオートで囲むと\tや\nという感じでエスケープシーケンスが使えため。

[Ruby]シングル/ダブルクォーテーションの差異

はまったポイント2

自分のRubyの環境(2.1)では問題なかったが、1.8を使っている人がエラーに。。。

以下に書いてあるようにCSVクラスの使い方が違ったようである。

RubyでTSVファイルを読み込む方法

(1.8の人は)第3引数に区切り文字の”\t”を指定する。
(2.0以上の人は) :col_sepオプションで \t を指定する

まあとはいえ、2016年1月22日現在1.x系はサポートされていないので、素直にバージョンアップしてくださいという話ではある。。。

13
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
13