【问题标题】:How to Export a Ruby Array into a single csv row?如何将 Ruby 数组导出到单个 csv 行中?
【发布时间】:2019-05-02 21:11:10
【问题描述】:

我希望将数组作为单行传递到 csv 中。下面的代码展示了我目前正在尝试的内容。该数组的长度是可变的,并且会展示类似这样的内容。

a = ["website url", "page link", "page link", "page link"]

代码本质上是使用 open-uri 进入一个页面并刮掉每个页面的链接。这用于内部验证并根据我们的预期进行检查。如果链接与我们期望的匹配,它会作为上面显示的页面链接变量报告到 csv 中。

我目前尝试使用 to_csv 来格式化数据,但在 csv 中,所有内容都在一行中,包括我的逗号分隔符。

def dwrite (array)
    CSV.open("filename.csv", "ab") do |csv|
            data = array.to_csv(row_sep: nil)
            csv << [data]
    end
end

这是 csv 在单列中的示例:

https://www.url.com/example-page.html
#,
#,,
#,,,
#,,,,
#,,,,,
#,,,,,,
#,,,,,,,
#,,,,,,,,
#,,,,,,,,,
#,,,,,,,,,,
#,,,,,,,,,,,
#,,,,,,,,,,,,
#,,,,,,,,,,,,,
#,,,,,,,,,,,,,,
#,,,,,,,,,,,,,,,
https://anotherexamplepage.html

我希望传递给该方法的每个数组元素都显示在同一行,但事实并非如此。任何帮助将不胜感激。

【问题讨论】:

  • 你不能简单地使用stackoverflow.com/questions/4822422/output-array-to-csv-in-ruby
  • s = a.join(',') #=&gt; "website url,page link,page link,page link"。您只是想将s 写入文件吗?如果是这样,为什么还要使用 CSV? File.write(fname, s) 就是你所需要的。
  • 不幸的是,由于该方法在此过程中被多次调用,我不确定 File.write 是否有效。我确实认为 a.join 方法会。谢谢!!如果您想将其作为解决方案发布,一旦我对其进行测试,我将接受它作为答案。

标签: ruby


【解决方案1】:

您不需要以任何方式转换数组。只需将其添加到 CSV:

def dwrite(array)
  CSV.open("filename.csv", "ab") do |csv|
    csv << array
  end
end

【讨论】:

  • 当我将代码切换到这种新格式时,我根本没有得到任何输出:(.
猜你喜欢
  • 2018-04-15
  • 2012-06-02
  • 2011-06-16
  • 2019-12-23
  • 1970-01-01
  • 2019-11-06
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多