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