0

ルビーCSVモジュールを使用してcsvファイルを読み込みます。

csvファイル内の値の1つは、XXX_XXXXXの形式です。Xは数字です。私はこの値を実際には文字列として扱いますが、CSVモジュールはこれらの値を数値としてのXXXXXXXXとして読み込んでいます。

私が現在使用しているオプション

f = CSV.read('file.csv', {:headers => true, :header_converters => :symbol, :converters => :all} )

CSVにそれを行わないように指示する方法はありますか?

4

2 に答える 2

2

f = CSV.read('file.csv'、{:headers => true、:header_converters =>:symbol)}

:converters => :all;を省略します。その人は(とりわけ)すべての数値に見える文字列を数値に変換しようとします。

于 2013-03-07T23:06:33.293 に答える
1

:convertors =>すべてがこれを引き起こします、以下を試してください

require "csv"

CSV.parse(DATA, :col_sep => ",", :headers => true, :converters => :all).each do |row|
  puts row["numfield"]
end
__END__
textfield,datetimefield,numfield
foo,2008-07-01 17:50:55.004688,123_45678
bar,2008-07-02 17:50:55.004688,234_56789

# gives
# 12345678
# 23456789

CSV.parse(DATA, :col_sep => ",", :headers => true).each do |row|
  puts row["numfield"]
end

__END__
textfield,datetimefield,numfield
foo,2008-07-01 17:50:55.004688,123_45678
bar,2008-07-02 17:50:55.004688,234_56789

# gives
# 123_45678
# 234_56789
于 2013-03-07T23:14:15.760 に答える