我有一个包含hashsets内容的文件(名为ter.txt
),如下所示:
{"qty"=>"gfg", "unit"=>"gfg", "item"=>"xcv", "cost"=>"0.0", "salestax"=>"0.0"}
{"qty"=>"gdf", "unit"=>"g", "item"=>"gg", "cost"=>"0.0", "salestax"=>"0.0"}
我想打印hashsets的值。我尝试了以下但是我收到了undefined local variable or method 'item'
file = File.open('ter.txt', 'r').map { |line| line.split("\n")[0] }
file.each do |hash|
p hash
p " #{hash[item]}"
end
答案 0 :(得分:0)
您不应该以这种方式保存数据。这是使用YAML的完美案例。写下你的文件:
---
- qty: gfg
unit: gfg
item: xcv
cost: 0.0
salestax: 0.0
- qty: gdf
unit: g
item: gg
cost: 0.0
salestax: 0.0
然后你可以用:
加载它require 'yaml'
data = YAML.load(File.read 'ter.txt')
答案 1 :(得分:0)
我首先将您的数据保存在名为 test.rb 的文件中。我打开了文件,读取了每一行并将所有=>
替换为:
,将其作为 json字符串。然后使用JSON::parse
方法将 json string 的每一行转换为Hash
对象。以下是我为解决您的问题而编写的代码: -
require 'json'
File.foreach("#{__dir__}/test.txt") do |line|
p JSON.parse(line.strip.gsub("=>", ":")).values
end
现在我从命令提示符运行代码并获得您正在寻找的输出: -
arup@linux-wzza:~/Ruby> ruby -vw test.rb
ruby 2.0.0p451 (2014-02-24 revision 45167) [i686-linux]
["gfg", "gfg", "xcv", "0.0", "0.0"]
["gdf", "g", "gg", "0.0", "0.0"]
arup@linux-wzza:~/Ruby>