关于选择现有的平面文件格式:有逗号分隔值(CSV) 格式。或者,更一般地说,DSV。但这些不是“固定宽度”,因为有一个分隔符(例如逗号)分隔各个单元格。请注意,尽管 CSV 是标准化的,但并非所有人都遵守该标准。此外,对于您的目的,CSV 可能很简单,因为它不允许丰富的文档结构。
在这方面,标准化且稍微复杂(但因此更有用)的格式JSON和YAML是更好的选择。两种语言都支持开箱即用。
最好的办法是查看本概述中列为非二进制的所有语言,然后确定最适合您的语言。
关于描述平面文件格式:这可能非常容易或困难,具体取决于格式。尽管在大多数情况下存在更简单的解决方案,但通常可行的一种方法是将文件格式视为正式语法,并为其编写词法分析器/解析器。但我承认,那是相当†</sup> 重型机械。
如果幸运的话,几个高级正则表达式可能会成功。然而,大多数格式都不适合这一点。‡</sup> 如果您打算自己编写词法分析器/解析器,我可以建议PLY (Python Lex-Yacc)。但是存在许多其他解决方案,有许多不同的语言,其中很多比老式的Lex 和 Yacc更方便。有关更多信息,请参阅您推荐什么解析器生成器?
†</sup>:是的,这可能是轻描淡写。
‡</sup>:即使正确地描述电子邮件地址格式也并非易事。