2017-02-05 20 views
1

"タブスペース"または "セミコロン(;)"または "カンマ(、)"で区切られたファイルを読んでいます。私はすべて3をチェックしたい。ファイルがカンマで区切られている場合は、そのファイルも同様に機能するはずです。助けてください!ルビのcsvファイルからデリミタを削除する方法

#!/usr/bin/ruby 

require 'csv' 

test = CSV.read('test.csv', headers:true, :col_sep => "\t") 
x = test.headers 
puts x 

答えて

0

それはあなたの問題を解決している可能性が正規表現、することはできません:col_sepのように見えます。 「

test = CSV.read('test.csv', headers:true, :col_sep => @col_sep) 
x = test.headers 
puts x 
# a 
# b 
# c 

xウォンの値:あなたが、その後使用することができます

require 'csv' 

possible_separators = ["\t", ';', ','] 
lines_to_analyze = 1 

File.open('test.csv') do |csv| 
    head = csv.first(lines_to_analyze).join 
    @col_sep = possible_separators.max_by { |sep| head.count(sep) } 
end 

@col_sep 
#=> ";" 

一つの可能​​な解決策は、CSVファイルの先頭を解析し、可能なセパレータの出現箇所をカウントするだろうセパレータが含まれています。

+0

ありがとう@エリックDuminil –

+0

しかし、私はタブのスペース/セミコロン/コンマをヘッダーから削除する必要があります私はテーブルを作成するヘッダー名が必要です。どうやってするの ? @Eric Duminil –

+0

回答が更新されました。 –

関連する問題