1

ファイルを取得してその内容を読み取り、改行に基づいてハッシュを作成しています。各行の内容に基づいてハッシュを作成できましたが、次の空白の改行の前のすべての内容に基づいてハッシュを作成するにはどうすればよいですか? 以下は私がこれまでに持っているものです。

入力:

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"}
4

3 に答える 3

0

read を使用してファイルの内容全体を読み取ります。

contents = ""
File.open('A.cfg').do |file|
  contents = file.read
end

次に、コンテンツを 2 つの改行文字で分割します。

contents.split("\n\n")

そして最後に、これらのチャンクを解析するために既に必要なものと非常によく似た関数を作成します。

ウィンドウで作業している場合、キャリッジ リターン文字のために別のシーケンスで分割する必要がある場合があることに注意してください。

于 2013-04-29T18:01:56.990 に答える