我有一個XML文件與<pb n="4-DIGIT-NUMBER" ... />
。這個數字在某些情況下是相同的,所以我想消除歧義,到目前爲止,但現在問題與計數(我有正確的方法?=> 3))Ruby:迭代子數組和計數項目;回寫入元素
1)讀取所有數字到一個陣列,產生一個很長的名單:
Dir.chdir("./Tustep/luxneu")
sammel = []
open("lp42tags.txt").each do |x|
if x =~ /<pb n="(\d\d\d\d)/
sammel << $1
end
end
2)查找號碼重複,並把它們放到子陣
dupl_groups = sammel.select{|i| sammel.grep(i).size > 1}.group_by{|x| x}.values
p dupl_groups
# (much shorter example)=> [["0119", "0119"], ["0147", "0147"], ["0156", "0156", "0156"]]
3)現在,我想我能以某種方式計算每個子陣列的元素,並把他們回到(或成爲副本..)。我想要[[「0119:1」,「0119:2」],[...],[「0156:1」,「0156:2」,「0156:3」],可能是這樣的(但只有搞笑的循環幾乎無盡的數字計算...:/)
dupl_counted = []
dupl_groups.each do |outer|
count = 1
dupl_groups do |inner|
#puts inner.inspect
inner_new = inner.to_s.sub(/(.+)/, "\\1:#{count}")
dupl_counted << inner_new
count += count
end
end
嚴重缺陷..?也許使用「each_with_index」的東西呢?此外,我需要這些小組以計算有意義的數據塊(切片3左右是不可接受的,因爲有2-6個重複的數字)。如果我可以在它的子陣列中分割數組,那麼它們會像普通數組一樣產生它們,那會好嗎?
在此先感謝! 勒內·T.
不要試圖用正則表達式解析XML。使用[Nokogiri](http://nokogiri.org),這是一個出色的解析器。另外,您需要展示正在分析的XML樣本,否則您會讓我們猜測您正在處理的內容。 –