ruby - 存储在 CSV 文件中 - ruby 分隔符

标签 ruby csv export-to-excel export-to-csv

我正在尝试将我的报废练习的结果存储到一个 CSV 文件中。

当前的 CSV 文件给我以下输出:

Name of Movie 1

Rating 1

Name of Movie 2 

Rating 2     

我想得到以下输出:

Name of Movie 1 Rating 1 

Name of Movie 2 Rating 2 

这是我的代码,我想它必须处理行/列分隔符:

require 'open-uri'
require 'nokogiri'
require 'csv'

array = []


for i in 1..10
  url = "http://www.allocine.fr/film/meilleurs//?page=#{i}"
  html_file = open(url).read
  html_doc = Nokogiri::HTML(html_file)


  html_doc.search('.img_side_content').each do |element|
    array << element.search('.no_underline').inner_text
    element.search('.note').each do |data|
      array << data.inner_text
    end
  end
end

puts array


csv_options = { row_sep: ',', force_quotes: true, quote_char: '"' }
filepath    = 'allocine.csv'

CSV.open(filepath, 'wb', csv_options) do |csv|
  array.each { |item| csv << [item] }
end

最佳答案

我认为这里的问题是您没有将元素正确地推送到您的 array 变量中。基本上,您的数组最终看起来像这样:

['Movie 1 Title', 'Movie 1 rating', 'Movie 2 Title', 'Movie 2 rating', ...]

你真正想要的是一个数组数组,像这样:

[
  ['Movie 1 Title', 'Movie 1 rating'],
  ['Movie 2 Title', 'Movie 2 rating'],
  ...
]

一旦您的数组设置正确,您甚至不需要在 CSV 选项中指定行分隔符。

以下应该可以解决问题:

require 'open-uri'
require 'nokogiri'
require 'csv'

array = []


10.times do |i|
  url = "http://www.allocine.fr/film/meilleurs//?page=#{i}"
  html_file = open(url).read
  html_doc = Nokogiri::HTML(html_file)


  html_doc.search('.img_side_content').each do |element|
    title = element.search('.no_underline').inner_text.strip
    notes = element.search('.note').map { |note| note.inner_text }
    array << [title, notes].flatten
  end
end

puts array

filepath    = 'allocine.csv'
csv_options = { force_quotes: true, quote_char: '"' }

CSV.open(filepath, 'w', csv_options) do |csv|
  array.each do |item|
    csv << item
  end
end

(我还冒昧地将您的 for 循环更改为 times,这更像 ruby​​ ;))

关于ruby - 存储在 CSV 文件中 - ruby 分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50487071/

相关文章:

ruby-on-rails - 在下载大型 CSV 文件作为后台进程时排队请求(延迟作业)

oracle - 如何循环遍历 Oracle PLSQL 中的分隔列表

android - 导出文件夹内的数据

Ruby on Rails regexp equals-tilde 与 array include 用于检查选项列表

python - 从csv输出python中删除所有逗号分隔

ruby-on-rails - Errno::ECONNREFUSED:连接被拒绝 - connect(2) for action mailer

export-to-excel - 使用 EPPlus 锁定图像(或图片)或从 Excel 获取图像(或图片)

javascript - DataTable 1.10.10 导出到 Excel 下载 zip 文件

ruby - cucumber 场景大纲中的换行符导致错误

Ruby 异常或错误?