Le fichier texte a des centaines de ces entrées (le format est de relevé bancaire MT940)meilleure façon d'analyser le fichier texte brut avec une structure d'information imbriquée
{1:F01AHHBCH110XXX0000000000}{2:I940X N2}{3:{108:XBS/091502}}{4:
:20:XBS/091202/0001
:25:5887/507004-50
:28C:140/1
:60F:C0914CHF7789,
:61:0912021202D36,80NTRFNONREF//0887-1202-29-941
04392579-0 LUTHY + xxx, ZUR
:86:6034?60LUTHY + xxxx, ZUR vom 01.12.09 um 16:28 Karten-Nr. 2232
2579-0
:62F:C091202CHF52,2
:64:C091302CHF52,2
-}
Cela devrait aller dans un tableau de hachages comme
[{"1"=>"F01AHHBCH110XXX0000000000"},
"2"=>"I940X N2",
3 => {108=>"XBS/091502"}
etc.
} ]
Je l'ai essayé avec le sommet de l'arbre, mais il ne semblait pas être le bon, parce que c'est plus pour quelque chose que vous voulez faire des calculs, et je veux juste l'information.
grammar Mt940
rule document
part1:string spaces [:|/] spaces part2:document
{
def eval(env={})
return part1.eval, part2.eval
end
}
/string
/'{' spaces document spaces '}' spaces
{
def eval(env={})
return [document.eval]
end
}
end
end
J'ai aussi essayé avec une expression régulière
matches = str.scan(/\A[{]?([0-9]+)[:]?([^}]*)[}]?\Z/i)
mais il est difficile de récursion ...
Comment puis-je résoudre ce problème?
+1 pour ne pas convoquant Cthulhu. –