我有一个股票符号的文本文件,每个符号都在它自己的行上。在Ruby中,我从文本文件中创建了一个数组,如下所示:
symbols = []
File.read('symbols.txt').each_line do |line|
symbols << line.chop!
end
对于数组中的每个符号,我想从一个json文件(例如MSFT.json)中读取并执行一些计算(所有这些都在运行),然后为下一个符号执行相同的操作数组。
当尝试“调用”并对数组中的第一项执行计算时,我这样做了:
json = File.read("#{symbols[0]}.json")
#...calculations come after this
这个工作正常,它确实贯穿了第一个符号的整个程序,但当然不会继续执行其余符号的相同步骤(我知道那是因为我在数组中指定了一个索引]
现在我知道该程序适用于单个符号,我现在希望它在数组中的所有符号上运行...所以在第一个块后,我尝试添加:symbols.each do
,并删除来自[0]
行的File.read
(并在计算结束时添加end
)。我希望它会遍历每个符号的“do”和“end”之间的所有内容。那没用。
然后我尝试在第一个块之后添加它:
def page(symbols, i)
page[i]
end
将File.read
行更改为:json = File.read("#{page[i]}.json)
但这也不起作用。
感谢任何帮助。非常感谢
答案 0 :(得分:1)
您可以简单地使用.each
而不是迭代器索引:
symbols.each do |symbol|
json = File.read("#{symbol}.json")
# do some calculation for symbol
end
答案 1 :(得分:0)
无需迭代两次:
open('symbols.txt').lines.each do |line|
symbol = line.strip
json = File.read("#{symbol}.json")
# process json
end