入力ファイルを読み込んで各列を以下のような個々の配列に展開しました。Rubyで配列のネストされた反復処理中に値がスキップされる
id = ["id\a_po87y", "id\ruio66", "id\rzd766", "id\ruio66", etc..]
store = ["Jack", "John_Marsha", "123_Smart_option", "John_Marsha", etc...]
group = ["leader", "leader_1", "fresher", "automation_dev", etc...]
id_details.txt(入力ファイル)私はそのような方法で、ネストされた様式で配列を反復する必要がありどの
id\a_po87y Jack leader
id\ruio66 John_Marsha leader_1
id\rzd766 123_Smart_option fresher
id\ruio66 John_Marsha automation_dev
....
etc
、配列の最初の要素 - 「ID」( id \ a_po87y)は、ファイルJack_details.txt(ストア配列の1番目の要素)でその優先順位がチェックされ、行名 - リーダー(グループ配列の最初の配列要素)から削除する必要があります。
同様に、id \ ruio66のavailabをチェックする必要があります2dnファイルのilty - 行ID-leader_1にあるJohn_Marshaが存在し、存在する場合は削除します。
ように..
id[0]--> store[0]-->group[0]
id[1]--> store[1]-->group[1]
and so on
私のコードが、値は私が間違ってやっている配列要素
file_dir = 'E:/ruby_work'
file = File.open("E:/ruby_work/id_details.txt", "r")
contents = file.each_line.map { |line| line.split("\t") }.transpose
id, file_name, group = contents
id.each do |ids|
puts "For ID: #{ids}"
file_name.each do |name|
value = File.open("#{file_dir}/#{name}_details.txt")
text = File.read(value)
#puts text
text.each_line do |el|
group.each do |gr|
if el.match(/#{gr}/) then
print "group row #{gr}\n"
print "Its matching\n"
replace = text.gsub(/#{Regexp.escape(ids)}\,\s/, '').gsub(/#{Regexp.escape(ids)}/, '').gsub /,\s*$/, ''
else print "Not\n"
print "group row #{gr}\n"
end
group.shift
end
end
file_name.shift
end
end
id.shift
でスキップされますか?
Jack_details.txt
Joined on Feb 7, 2016
Created by: Solomon (ruio66)
[groups]
leader_1 = id\rty67, id\mztrt, id\ruio66, ncr\025kc, id\a_po87y
automation = id\bzo0l4, ccr\poxz7j
automation_dev = id\ruio66
John_Marsha_details.txt
Joined on Jan 7, 2016
Created by: Jack Rondon
[groups]
leader_1 = id\sop0r2, id\34_dev, id\mz4d5, id\ruio66
fresher = id\kzpo98, id\gz8sl7, id\cp0jxr, id\fzxlol,
automation_dev = id\ruio66
出力
For ID: id\a_po87y
Not
group row leader
Not
group row leader_1
For ID: id\ruio66
配列の反復処理中に配列を変更しています。それはおそらくうまくいかない。 –
@Goku私はあなたを助けたいが、あなたが本当に望むものを理解できない。サンプル入力ファイルに対応する出力を提供してください。私は解説で私に言及し、私はあなたを助けるでしょう。 – DjezzzL
@DjezzzL:返信が遅れました。私はサンプルの入力ファイルと出力を使って質問を編集しました。あなたのお時間をありがとうございました。 – Goku