我正在读取一个文件并读取它的内容并根据换行符创建一个散列。我已经能够根据每一行的内容制作散列表,但是如何在下一个空白换行符之前根据所有内容创建散列表?以下是我到目前为止。从一个文件中取多行并创建散列
输入:
Title 49th parallel
URL http://artsweb.bham.ac.uk/
Domain artsweb.bham.ac.uk
Title ABAA booknet
URL http://abaa.org/
Domain abaa.org
代码:
File.readlines('A.cfg').each do |line|
unless line.strip.empty?
hash = Hash[*line.strip.split("\t")]
puts hash
end
puts "\n" if line.strip.empty?
end
输出:
{"Title"=>"49th parallel"}
{"URL"=>"http://artsweb.bham.ac.uk/"}
{"Domain"=>"artsweb.bham.ac.uk"}
{"Title"=>"ABAA booknet"}
{"URL"=>"http://abaa.org/"}
{"Domain"=>"abaa.org"}
所需的输出:
{"Title"=>"49th parallel", "URL"=>"http://artsweb.bham.ac.uk/", "Domain"=>"artsweb.bham.ac.uk"}
{"Title"=>"ABAA booknet", "URL"=>"http://abaa.org/", "Domain"=>"abaa.org"}
你的问题是矛盾的。你有空格分隔''域名''和它的值,而在你的代码中你用'“\ t”'分隔。所以你不应该能够得到你所声称的输出。 – sawa 2013-04-29 18:49:28
@sawa我认为很明显,输入文件实际上是制表符分隔的,并且它不能在复制和粘贴之后存活。切换回标签,我得到了声称的确切输出。 – 2013-04-29 18:56:28
@sawa鉴于输出,它非常清楚。你似乎在推测OP在说谎。 – 2013-04-29 19:03:27