Ruby CSV输入值格式

时间:2013-03-07 22:50:42

标签: ruby csv

我使用ruby CSV模块读取csv文件。

csv文件中的一个值格式为XXX_XXXXX,其中X是数字。我将此值视为字符串,实际上,但CSV模块正在读取这些值为XXXXXXXX,作为数字,我不想要。

我目前使用的选项

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

有没有办法告诉CSV不这样做?

2 个答案:

答案 0 :(得分:1)

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

忽略:converters => :all;那个尝试(以及其他)将所有数字看起来的字符串转换为数字。

答案 1 :(得分:0)

: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