我有一个保存在数组中的人员列表,我想与组织循环一个文件以查找匹配项并保存它们,但它一直出错。我想我对数组做错了。
这正是我正在做的事情:
- 我在一个名为“personen_fixed.csv”的文件中有一个人员列表。
- 我将该列表保存到一个数组中。
- 我有另一个文件,它也有人名(“pers2”),还有其他三个有趣的数据列。我将四列保存到数组中。
- 我想遍历第一个数组(人员)并搜索与人员列表(“pers2”)的匹配项。
- 如果有匹配项,我想保存该行。
我现在得到的是两行数据,其中一行是所有人。请参阅下面的代码。在底部我有一些示例输入数据。
require 'csv'
array_pers1 = []
array_pers2 = []
array_orgaan = []
array_functie = []
array_rol = []
filename_1 = 'personen_fixed.csv'
CSV.foreach(filename_1, :col_sep => ";", :encoding => "windows-1251:utf-8", :return_headers => false) do |row|
array_pers1 << row[0].to_s
end
filename_2 = 'Functies_fixed.csv'
CSV.foreach(filename_2, :col_sep => ";", :encoding => "windows-1251:utf-8", :return_headers => false) do |row|
array_pers2 << row[1].to_s
array_orgaan << row[16].to_s
array_functie << row[17].to_s
array_rol << row[18].to_s
end
CSV.open("testrij.csv", "w") do |row|
row << ["rijnummer","link","ptext","soort_woonhuis"]
for rij in array_pers1
for x in 1...4426 do
if rij === array_pers2["#{x}".to_f]
pers2 = array_pers2["#{x}".to_f]
orgaan = array_orgaan["#{x}".to_f]
functie = array_functie["#{x}".to_f]
rol = array_rol["#{x}".to_f]
row << [pers2,orgaan,functie,rol]
else
pers2 = ""
orgaan = ""
functie = ""
rol = ""
end
end
end
end
第一个excel数据的输入数据(excel列名和第一行数据):
person
someonesname
第二个excel文件的输入数据:
person,organizationid,role,organization,function
someonesname,34971,member,americanairways,boardofdirectors
由于数据集中的许多人在不同的组织有多个工作,我想把他们都保存在彼此旁边(我想要的输出):
person,organization(1),function(1),role(1),organization(2),function(2),role(2) (max 5)