我使用ruby CSV模块读取csv文件。
csv文件中的一个值格式为XXX_XXXXX,其中X是数字。我将此值视为字符串,实际上,但CSV模块正在读取这些值为XXXXXXXX,作为数字,我不想要。
我目前使用的选项
f = CSV.read('file.csv', {:headers => true, :header_converters => :symbol, :converters => :all} )
有没有办法告诉CSV不这样做?
答案 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