Ruby - 将哈希打印到txt文件

时间:2014-01-20 18:45:47

标签: ruby hash

需要将以下哈希打印到txt文件中,每个键作为文件名,每个键的值作为每个文件的内容。

哈希

{ 'a' => [ 'abc' , 'def', 'ghi'] , 'b' => [ 'jkl' , 'mno' , 'pqr' ] }

输出文件应具有以下格式

A.TXT

abc
def
ghi

b.txt

jkl
mno
pqr

想知道如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

hash = { 'a' => [ 'abc' , 'def', 'ghi'] , 'b' => [ 'jkl' , 'mno' , 'pqr' ] }
hash.each do |k,v|
  File.open("#{k}.txt", 'w'){|f| f.puts v}
end

答案 1 :(得分:2)

我会使用File.write

hash = { 'a' => [ 'abc' , 'def', 'ghi'] , 'b' => [ 'jkl' , 'mno' , 'pqr' ] }
hash.each { |k, v| File.write(k, v.join("\n")) }

或者:

hash.each { |k, v| File.write(k, v * "\n") }

如果你想在最后一行的末尾回车,那么在循环中使用puts的答案之一将起作用。一些应用程序关心是否有尾随行结束,其他应用程序则不关心。

答案 2 :(得分:1)

尝试类似:

hash.each do |key, vals|
  File.open("#{key}.txt", 'w') { |file| file.puts *vals }
end

答案 3 :(得分:1)

hash.each do |key,value|

File.open("nameoffile.txt", "w"){ |file| file.puts value} #Opened file gets each value of correposnding hash key's

end

或只是

hash.each_value do |value|

File.open("nameoffile.txt", "w"){ |file| file.puts value} #Opened file gets each value of correposnding hash key's

end