0

这可能是一种倒退的方式。我有一些代码可以读取 CSV 文件并将结果打印到 HTML 文件中。如果可能的话,我希望将此文件打印为无序列表。

这就是我现在拥有的,它的输出不是我想要的:

require 'csv'

 col_data = [] 
 CSV.foreach("primary_NAICS_code.txt") {|row| col_data << row} 

begin
  file = File.open("primary_NAICS_code_html.html", "w")
  col_data.each do |row|
    indentation, (text,*) = row.slice_before(String).to_a
    file.write(indentation.fill("<ul>").join(" ") + "<il>" + text+ "</il></ul?\n")
  end
rescue IOError => e
 puts e
ensure
  file.close unless file == nil
end
4

1 回答 1

1
  • 无序列表不被包围<ul> ... </ul?。问号不会让 HTML 开心。
  • 列表项是<li>标签,而不是<il>.
  • 您需要跟踪您的深度,以了解是否需要添加<ul>标签或仅添加更多项目。

尝试这个:

require 'csv'

col_data = [] 
 CSV.foreach("primary_NAICS_code.txt") {|row| col_data << row} 

begin
  file = File.open("primary_NAICS_code_html.html", "w")
  file.write('<ul>')
  depth = 1
  col_data.each do |row|
    indentation, (text,*) = row.slice_before(String).to_a
    if indentation.length > depth
      file.write('<ul>')
    elsif indentation.length < depth
      file.write('</ul>')
    end
    file.write("<li>" + text+ "</li>")
    depth = indentation.length
  end
  file.write('</ul>')
rescue IOError => e
  puts e
ensure
  file.close unless file == nil
end

它不是很漂亮,但它似乎工作。

于 2013-10-10T21:25:03.927 回答