我有一个带有<pb n="4-DIGIT-NUMBER" ... />
. 这个数字在某些情况下是相同的,所以我想消除歧义,到目前为止,但现在计数有问题(我有正确的方法吗?=> 3))
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。