• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Ruby 改行文字の挿入)

Ruby 改行文字の挿入

このQ&Aのポイント
  • Rubyにおいて、改行の無いhtmlファイルを読み込む際に改行文字を挿入する方法について教えてください。
  • 特定の行だけ正規表現にマッチさせて文字列を取り出す方法を試しましたが、上手くいきませんでした。
  • どのようにして、改行が無いhtmlファイルを正規表現の通りに取得することができるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

No1.です。 EDINETらしいことは分かったので、「公告閲覧」で出てきたページの例を書いていきます。 ソースコードをEDINET.htmlでファイルとして保存している場合は以下のプログラムで表の中身を取り出せます。 表が2つあったので、二番目の表とするより <DIV class="result"> の直下の表として取り出しています。また、テキスト部分に\tなどやたらあるのでそれを取り除いています。 require 'nokogiri' doc = Nokogiri::HTML(IO.read("EDINET.html")) div_result=doc.xpath('//div[@class="result"]') table=div_result.xpath('table') rows=table.xpath('tr') results=rows[1..-1].collect{|row| columns=row.xpath('td') columns.collect{|c| c.text.delete("\t\r\n")} } p results

その他の回答 (2)

  • siffon9
  • ベストアンサー率64% (136/211)
回答No.2

こんにちは 後々のことを考慮すると、私もNokogiriの様なパーサを使用するのが良いと思いますが、いきなり習得しろというのも難しいのかもしれませんね。 > File.openとeach_line、gsub!を用いて置換して挿入する方法では上手く取得することができませんでした。 まだパーサの存在を知る前に、全く改行のないHTMLを処理したことがあったのですが、そのときは全てのタグの閉じ(>)に改行を付加して一旦別ファイルに出力し、改めてそのファイルを読んで一行ずつ処理しました。 ※段付けの為、行頭に全角スペースを使用しています。 data.each do |find|  File.open("find2.txt", "w") do |f2|   File.foreach(find) do |line|    line.gsub!(/>/, ">\n")    f2.puts line   end  end flag = nil IO.foreach("find2.txt") do |line2|

  • ki073
  • ベストアンサー率77% (491/634)
回答No.1

こちらにありましたね。 多分表組になっているように思いますので、Nokogiriの使用をお勧めします。 (表組になっていなくても)

関連するQ&A