You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Ruby将不等长数组数据导出为指定格式的文本文件?

Ruby 数据导出到文本文件解决方案

单个数据组的处理

你的问题出在原来的代码没有处理Data里的嵌套数组——直接用join会把整个嵌套数组当成一个字符串输出,自然得不到你要的展开效果。我们需要遍历No对应的数组,逐个生成每行数据:

keys = %w[ID No time]
Data = ["a", ["1", "2", "3", "4"], 20]

File.open('test1.txt', 'w') do |f|
  # 先写入表头行
  f.puts keys.join(' ')
  # 解构Data里的三个值:ID的固定值、No的数组、time的固定值
  id_val, nos, time_val = Data
  # 遍历每个No值,拼接成一行写入文件
  nos.each do |no|
    f.puts [id_val, no, time_val].join(' ')
  end
end

运行这段代码后,test1.txt的内容就会完全符合你的期望:

ID No time
a 1 20
a 2 20
a 3 20
a 4 20

多组数据的扩展处理

如果有多个类似的Data1、Data2、Data3,我们可以把它们放到一个数组里统一遍历处理,这样代码更简洁易维护:

keys = %w[ID No time]
# 定义多组数据
Data1 = ["a", ["1", "2", "3", "4"], 20]
Data2 = ["b", ["5", "6"], 30]
Data3 = ["c", ["7"], 40]

# 把所有数据组放进一个数组里
all_datasets = [Data1, Data2, Data3]

File.open('test_multiple.txt', 'w') do |f|
  # 表头只写一次(如果需要每个数据组都带表头,把这行移到下面的each循环里即可)
  f.puts keys.join(' ')
  # 遍历每个数据组
  all_datasets.each do |data|
    id_val, nos, time_val = data
    nos.each do |no|
      f.puts [id_val, no, time_val].join(' ')
    end
  end
end

这段代码会生成包含所有数据组内容的文件,输出格式如下:

ID No time
a 1 20
a 2 20
a 3 20
a 4 20
b 5 30
b 6 30
c 7 40

内容的提问来源于stack exchange,提问作者Rubz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:48:36