首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Rails中从csv导入数据库时如何将字符串"560,000“转换为整数560000

问在Rails中从csv导入数据库时如何将字符串"560,000“转换为整数560000
EN

Stack Overflow用户
提问于 2012-05-17 12:46:36
回答 3查看 1.2K关注 0票数 1

刚开始学习Rails,并且已经成功地将csv文件导入到数据库中,但是csv中的价格字段有引号和逗号,如:"560,000“

但是,如果我在迁移文件中将价格字段设置为t.integer,然后添加数据,价格将导入为560。那么,如何在导入之前删除引号和逗号?谢谢,亚当

编辑:这是rake文件:

代码语言:javascript
复制
require 'csv'    

task :csv_to_properties => [:environment] do 
  CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|

    Property.create!(row.to_hash)
  end
end
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-05-17 13:28:30

在您的代码示例中,假设价格字段位于row元素4中:

代码语言:javascript
复制
CSV.foreach("lib/assets/cbmb_sale.csv", :headers => true) do |row|
  row[price=4].gsub!(/,/,'')
  Property.create!(row.to_hash)
end

price=4只是一种记录价格元素索引值的便捷方法,它创建了一个名为price的变量,将值4赋给它,然后立即将其用作数组索引。

从Property.create开始!已经负责字符串到整数的转换,我们可以对包含空字符串''的逗号/,/的正则表达式执行就地替换。

票数 1
EN

Stack Overflow用户

发布于 2012-05-17 12:49:31

尝试如下所示:

代码语言:javascript
复制
csvvalue = csvvalue.gsub!(/,/,'').to_i

干杯!

感谢您发布您的代码。我没有做大量的csv到hashes的转换,但是像下面这样的东西可能会起作用:

代码语言:javascript
复制
Property.create!(row.to_hash.each_pair{|k,v| row.store(k,v.gsub(/,/,'').to_i)})

很难看,但可能很接近你想要的。

票数 2
EN

Stack Overflow用户

发布于 2012-05-17 14:02:16

尝试:

代码语言:javascript
复制
"220,000".scan(/\d+/).join().to_i
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10629958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档