我应该如何解析Ruby中的固定长度记录文件?

我应该如何解析Ruby中的固定长度记录文件?,ruby,parsing,Ruby,Parsing,我想知道是否有人对在Ruby中解析具有固定长度记录的文件有什么建议。该文件有几个部分,每个部分有一个页眉、n个数据元素和一个页脚。例如(这完全是胡说八道,但内容大致相同) 在本例中,页眉、页脚和数据行均以特定数字(1、2和3)开头 我已经看过了,它看起来不错——只是文档很简单,我不知道如何拥有n个数据元素 干杯, Dan与往常一样,有几种选择 如果您想手动执行,我建议如下: 非常伪代码: Read file while lines in file handle_line(line) e

我想知道是否有人对在Ruby中解析具有固定长度记录的文件有什么建议。该文件有几个部分,每个部分有一个页眉、n个数据元素和一个页脚。例如(这完全是胡说八道,但内容大致相同)

在本例中,页眉、页脚和数据行均以特定数字(1、2和3)开头

我已经看过了,它看起来不错——只是文档很简单,我不知道如何拥有n个数据元素

干杯,
Dan

与往常一样,有几种选择

如果您想手动执行,我建议如下:

非常伪代码:

Read file
while lines in file
    handle_line(line) 
end

def handle_line
    type=first_char
    parse_line(type)
end

def parse_line
    split into elements and do_whatever_to_them
end
可以使用例如
unpack()


unpack()
使用的模式将随不同类型记录上的字段长度而变化,代码将取决于是否需要尾随空格等。有关详细信息,请参阅。

有多种方法可以做到这一点。可以使用定义字段的模式,如下所示:-

"209231-231992395    MoreData".unpack('aa5A1A9a4Z*')
["2", "09231", "-", "231992395", "    ", "MoreData"]
这将返回一个数组,如下所示:-

"209231-231992395    MoreData".unpack('aa5A1A9a4Z*')
["2", "09231", "-", "231992395", "    ", "MoreData"]

有关打包/解包格式的说明,请参阅。

谢谢大家-解包工作做得很好。干杯