2013-03-07 72 views
0

我正在使用ruby CSV模块读取csv文件。Ruby CSV输入值格式

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

选项我目前使用

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

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

回答

1

F = CSV.read( 'FILE.CSV',{:标题=>真,:header_converters =>:符号)}

漏下:converters => :all; (其中包括)将所有数字字符串转换为数字。

+0

谢谢!!那就做到了! – 2013-03-07 23:09:11

0

的:转换器=>各种原因导致此,请尝试以下

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 
+0

谢谢!你是对的。不幸的是,史蒂文拉格之前回答了同样的答案......所以我选择了他/她的答案。但是谢谢你! – 2013-03-09 00:50:11

+1

是的,我花了更多时间记录我的答案,对未来打这个人很有帮助,快乐编码.. – peter 2013-03-09 01:31:10