加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 处理具有多种固定格式的文件的策略

发布时间:2020-12-15 22:05:39 所属栏目:大数据 来源:网络整理
导读:这个问题不是特定于Perl的(尽管 unpack 函数很可能会影响我的实现). 我必须处理存在多种格式的文件,以便将数据分层次地分解为有意义的部分.我希望能够做的是将文件数据解析为合适的数据结构. 这是一个例子(关于RHS的评论): # | Format | Level | Comment #
这个问题不是特定于Perl的(尽管 unpack函数很可能会影响我的实现).

我必须处理存在多种格式的文件,以便将数据分层次地分解为有意义的部分.我希望能够做的是将文件数据解析为合适的数据结构.

这是一个例子(关于RHS的评论):

# | Format | Level | Comment
                                       # +--------+-------+---------
**DEVICE 109523.69142                  #        1       1   file-specific
  .981    561A                         #        2       1
10/MAY/2010    24.15.30,13.45.03       #        3       2   group of records
05:03:01   AB23X  15.67   101325.72    #        4       3   part of single record
*           14  31.30474 13        0   #        5       3   part of single record
05:03:15   CR22X  16.72   101325.42    #        4       3   new record
*           14  29.16264 11        0   #        5       3
06:23:51   AW41X  15.67    101323.9    #        4       3
*           14  31.26493219        0   #        5       3
11/MAY/2010    24.07.13,13.44.63       #        3       2   group of new records
15:57:14   AB23X  15.67   101327.23    #        4       3   part of single record
*           14  31.30474 13        0   #        5       3   part of single record
15:59:59   CR22X  16.72   101331.88    #        4       3   new record
*           14  29.16264 11        0   #        5

我现在的逻辑是脆弱的:

>我知道,例如,格式2总是在格式1之后,并且它们只跨越2行.
>我也知道格式4和格式5总是成对出现,因为它们对应于单个记录.记录的数量可以是变量
>我正在使用正则表达式来推断每一行的格式.然而,这是有风险的,并且在将来不具有灵活性(当有人决定改变输出的格式时).

这里最大的问题是我可以采用什么策略来确定哪个格式需要用于哪一行.我很想知道其他人是否遇到过类似情况以及他们为解决这些问题所采取的措施.

解决方法

根据你想要做的事情,它可能是一个实际编写正式语法的好地方,例如使用 Parse::RecDescent.这将允许您将整个文件提供给解析器,并从中获取数据结构.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读