ruby - 将数组值存储到 csv 列中
问题描述
我有一个需要写入 csv 的哈希,这是通过下面的代码完成的。
require 'csv'
my_array = [ {name: 'Toyota', model: 'Corolla', engine: [ 4, 6]},{name: 'Honda', model: 'Civic', engine: [ 6, 8]} ]
CSV.open("my_csv.csv", "w", headers: my_array.first.keys, :write_headers => true) do |csv|
my_array.each do |hash|
csv << hash.values
end
end
如您所见,其中一个键中存储了一组值 - engine
。在我的 csv 中,它如下所示。
name,model,engine
Toyota,Corolla,"[4, 6]"
Honda,Civic,"[6, 8]"
而不是engine
像上述格式的列,"[4, 6]"
我怎样才能4,6
在保持 csv 格式的同时得到它。当必须在 csv 列中存储一组值时,典型的约定是什么?
解决方案
在CSV 列中存储数组(和任何其他对象)没有“典型约定”。CSV 应该存储文本值。
如果要将它们放在单列中,只需加入数组:
csv << hash.values.map { |e| [*e].join(',') }
推荐阅读
- php - 来自mysql的JSON无法通过PHP正确显示
- android - 即使在联网后,Android 应用程序中的互联网连接问题
- python - 为什么更改新列表时原始列表会更改?
- c - C管道stdout到fork
- python - 使用 Python 进行 Web 抓取给出 HTTP 错误 404:未找到
- c# - .Net:无法从程序集“IBM.XMS.Client.WMQ,版本=8.0.0.7”加载类型“IBM.WMQ.ManagedCommonServices”
- hyperledger-fabric - 如何在 Hyperledger Fabric 中编写自己的共识?
- mysql - 如何将存储过程的输出存储在表中
- php - Symfony3.4 - 集合引用相同的实体字段失去链接关联
- sql - 两个日期和两个时间列sql server之间的可用房间预订