أفضل طريقة تحليل ملف نص عادي مع المتداخلة بنية المعلومات
سؤال
ملف نصي يحتوي على مئات من هذه الإدخالات (شكل MT940 بيان من البنك)
{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
-}
هذا يجب أن تذهب إلى مجموعة من التجزئات مثل
[{"1"=>"F01AHHBCH110XXX0000000000"},
"2"=>"I940X N2",
3 => {108=>"XBS/091502"}
etc.
} ]
حاولت ذلك مع أعلى شجرة ، ولكن يبدو أن لا يكون في الطريق الصحيح ، لأنه أكثر شيء كنت تريد أن تفعل الحسابات و انا فقط اريد معلومات.
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
كما أنني حاولت مع التعبير العادي
matches = str.scan(/\A[{]?([0-9]+)[:]?([^}]*)[}]?\Z/i)
ولكن من الصعب مع العودية ...
كيف يمكنني حل هذه المشكلة ؟
المحلول
هناك عدة مفتوحة المصدر MT940 موزعي المتاحة في جافا و PHP.يمكنك إلقاء نظرة على التعليمات البرمجية المصدر و المنفذ إلى روبي.إذا كنت على JRuby ثم يمكنك استخدام جافا محلل في روبي البرمجية.
الخيار الآخر هو استخدام فكس جوهرة.جوهرة يوزع فكس الملفات.منذ الملف في MT940 الشكل ، يجب أن تحويل الملف إلى فكس تنسيق استخدام أحد مجانا محولات المتاحة.هذا النهج هو عملي إذا كنت تقوم باستيراد في مجموعة العمل.... الخ
المرجعية