
199,Shoes,59.99211,Shirts,19.99245,Hats,25.99689,Coats,99.99712,BeanIEs,6.99
我希望它看起来像这样.
products = { 199 =>['Shoes',59.99],211 =>['Shirts',19.99],245 =>['Hats',25.99],689 => ['Coats',99.99],712 => ['BeanIEs',6.99]} 这就是我能提出的并不是它真正想要的东西.
products_file = file.open("files.txt")products_hash = []while ! products_file.eof? product_hash = products_file.gets.chomp print product_hash.split(',')end 以下是我提出的输出:
["199","Shoes","59.99"]["211","Shirts","19.99"]["245","Hats","25.99"]["689","Coats","99.99"]["712","BeanIEs","6.99"]解决方法 我将您的数据保存为名为products.csv的CSV文件并执行此 *** 作:
require 'csv'products = {}CSV.foreach("products.csv") do |line| products[line[0].to_i] = [line[1].strip,line[2].to_f]endproducts#=> {199=>["Shoes",211=>["Shirts",245=>["Hats",689=>["Coats",712=>["BeanIEs",6.99]} 使用each_with_object可以更简洁的方式实现相同的结果,但它会立即将整个文件读入内存,如果文件很大,这可能不是一个好主意:
require 'csv'products = CSV.read("products.csv").each_with_object({}) do |line,h| h[line[0].to_i] = [line[1].strip,line[2].to_f]end 正如Phrogz最初建议的那样,还有一种更实用的方法:
require 'csv'products = Hash[ CSV.read('products.csv').map do |row| [ row[0].to_i,[row[1].strip,row[2].to_f] ]end ] 总结 以上是内存溢出为你收集整理的ruby – 从类似CSV的文件创建哈希全部内容,希望文章能够帮你解决ruby – 从类似CSV的文件创建哈希所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)