【发布时间】:2018-11-09 23:43:22
【问题描述】:
我有以下测试数据,需要使用 ruby 编程导出为我想要的输出中显示的格式。真实数据数组有 1000000 条记录。
data_array1=aaaa
data_array2=bbbb
----------------
----------------
data_array8=hhhh , which means there are 8 data array, those have the following format :
aaaa= [a,[1,2,3,4],20]
bbbb= [b,[8,7,9,19],23]
-----------------------
-----------------------
hhhh= [h,[25,26,29,30],28]
我想要的输出需要导出到文本文件(标题仅供参考,无需包含在输出文件中):
输出.txt
哈希交易时间
a 1 20
a 2 20
a 3 20
a 4 20
b 8 25
b 7 25
b 9 25
b 19 25
------------
------------
h 25 28
h 26 28
h 29 28
h 30 28
我是 Ruby 的新手,到目前为止我已经这样做了,但还没有定论:
def bhash
1.upto(8) do |bid|
blk=[bid]
keys = %w[hash tx time ]
data = keys.map{|key| blk[key]}
hash, txids, time, difficulty = data
CSV.open('output.txt', 'w', headers: keys, write_headers: true, col_sep:
"\t") do |csv|
txids.each do |tx|
csv << [hash,tx,time]
end
end
end
提前感谢您的所有帮助。
【问题讨论】:
-
你是怎么调用这个函数的?您有一个名为
file的参数,但您没有使用它。另外,[a,[1,2,3,4],20]不是哈希,它是一个数组,其中的第二个元素是另一个数组。 -
感谢@Tom。刚刚编辑了错误,你指出了。
-
您至少缺少两个
end语句。这个函数甚至不会像写的那样运行。它也没有使用任何数据。data =....行将失败,因为您不能将字符串隐式转换为整数。这只是初学者。 -
请提供您的建议,我的代码不确定,谢谢。
-
如何将数据输入函数?数据从何而来?
1.upto(8) do |bid|后跟blk=[bid]表示blk现在是一个数组,其中包含一个值为1的元素。换句话说,在循环的第一次迭代中,blk=[1]。然后你尝试访问blk,就好像它是一个哈希一样,但它不是。