在Python中,哪种结构化文本格式支持最好?
这个问题可能有点主观,但我想问问大家,哪种常见的结构化文本数据格式在Python中支持得最好。
我最初考虑的选项有:
- XML
- JSON
- YAML
在这三种格式中,哪一种在Python中最容易使用(也就是说,库支持最好/性能最好)……或者有没有其他我没提到的格式,在Python中支持更好。
我不能使用仅限于Python的格式(比如Pickling),因为互操作性非常重要,但处理这些文件的大部分代码会用Python编写,所以我希望使用一种在Python中支持最强的格式。
CSV或固定列文本在大多数情况下也可以用,但我更喜欢一种更灵活、可扩展的格式。
谢谢!
注意
关于互操作性,我最开始会用Ruby生成这些文件,使用Builder
,不过Ruby不会再使用这些文件。
4 个回答
我觉得这主要取决于你想用数据做什么。如果你要建立一个复杂的数据库,并对数据进行处理和转换,那么我觉得用XML会更好。在这方面,我发现lxml
这个模块非常有用。它完全支持像xpath和xslt这样的标准,而且这些支持是用本地代码实现的,所以性能会很好。
但是如果你做的事情比较简单,那可能用yaml或json这样的简单格式会更合适。我听说过“json转换”,但不太清楚这项技术有多成熟,或者Python对它的支持发展得怎么样。
JSON在Python中支持得很好,而且比XML要简洁得多(如果你只是想快速存取和加载对象,使用起来也更方便)。我知道的情况是,YAML没有现成的支持,虽然我也没仔细查过。总体来说,我建议使用JSON,因为它格式简单,支持的编程语言也很多,但这也要看你的具体应用场景。如果你在一个已经有成熟应用的领域工作,那么他们使用的格式可能更合适,即使这些格式在技术上不够完美。
我推荐用JSON,虽然YAML也不错,但它的兼容性不是很好。
至于XML,看起来就像一团乱麻,而且内容太繁琐了。
从Python 2.6开始,Python就自带了一个JSON模块。