假设我有一堆用Text::Table创建的表。是否存在将它们转换回Perl数据结构的解析器,或者我是否必须自己编写?
答案 0 :(得分:2)
Text :: Table是用于创建数据表示的模块。如果它用于存储和检索(即文件格式),它将包括解析现有表的方法。
答案 1 :(得分:2)
看起来有点令人费解。如果您在将其转换为表格之前获得了信息,那么为什么要尝试从其表示形式中解析它?这就像有一个文本文件,将其转换为latex,然后转换为postscript,然后尝试从postscript文件中获取文本。
我确信有一种方法可以解析Text :: Table的输出,但似乎你的工作流程存在缺陷;我的目标是为数据使用更简单的输出(除了Text :: Table,如果你真的必须这样),就像YAML那样可以简单地恢复到原始数据结构。
答案 2 :(得分:0)
通过在Google上执行“site:search.cpan.org”Text :: Table“解析”搜索,我找不到用于此目的的模块。
答案 3 :(得分:0)
为什么不使用CSV?
如果你有许多不同长度的列,那么CSV在人类可读方面并不是很好,但它可以在紧要关头完成。
CSV的好处在于,任何电子表格(以及许多其他工具)都会以友好,友好的方式解析和显示CSV。
<强>更新强>
布莱恩,
基于OP的评论,上面:
客户想要一个既可人也可机读的表格数据格式。 - Horace Loeb 5月31日3:26
我得出的结论是,他可以控制生产代码作为消费代码。
我的回答是回答“我可以使用哪种格式的人机阅读?”
答案 4 :(得分:-1)
您可以在输出之前将它们作为Perl自我保留。无论您打印一次,都可以根据需要重印。请参阅Storable - 或YAML::Syck,它会将其转储到YAML中。
如果您的格式为Storable,则可以
但是,使用YAML,修改YAML文件可能很容易。
Text::Table给出的示例的YAML如下所示:
--- !!perl/hash:Text::Table
blank: ~
cols:
-
- Mercury
- Venus
- Earth
- Jupiter
-
- 2360
- 6110
- 6378
- 71030
-
- 3.7
- 5.1
- 5.52
- 1.3
forms:
- "%s %s %s"
- "%s %s %s"
lines: ~
spec:
-
align: auto
align_title: left
align_title_lines: left
sample: []
title:
- Planet
-
align: auto
align_title: left
align_title_lines: left
sample: []
title:
- Radius
- km
-
align: auto
align_title: left
align_title_lines: left
sample: []
title:
- Density
- g/cm^3
titles:
-
- Planet
- " "
-
- Radius
- "km "
-
- Density
- "g/cm^3 "