首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析具有嵌套信息结构的纯文本文件的最佳方法

解析具有嵌套信息结构的纯文本文件的最佳方法
EN

Stack Overflow用户
提问于 2010-03-17 09:11:50
回答 1查看 1.7K关注 0票数 2

文本文件有数百个这样的条目(格式为MT940银行对账单)

代码语言:javascript
复制
{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
-}

这应该放入散列数组中,如下所示

代码语言:javascript
复制
[{"1"=>"F01AHHBCH110XXX0000000000"},
  "2"=>"I940X           N2", 
   3 => {108=>"XBS/091502"}
etc.
} ]

我在tree top上试过,但它似乎不是正确的方法,因为它更多的是为了一些你想要计算的东西,而我只是想要信息。

代码语言:javascript
复制
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

我还尝试使用正则表达式

代码语言:javascript
复制
matches = str.scan(/\A[{]?([0-9]+)[:]?([^}]*)[}]?\Z/i)

但是使用递归很难...

我该如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-17 10:52:38

在Java和PHP语言中有几个开放源码的MT940解析器。您可以查看源代码并将其移植到Ruby。如果您使用的是JRuby,那么您可以在ruby代码中使用java解析器。

另一种选择是使用OFX gem。gem解析OFX文件。由于您的文件是MT940格式,您必须使用可用的免费转换器之一将文件转换为OFX格式。如果您是在批处理作业中导入,则此方法非常实用。

参考

MT940 Java parser.

MT940 to OFX Converter 1

MT940 to OFX Converter 2

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2459292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档