Python面向对象编程指南(第9章)序列化和保存-JSON、YAML,PickleCSV和XML
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python面向对象编程指南(第9章)序列化和保存-JSON、YAML,PickleCSV和XML,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2226字,纯文字阅读大概需要4分钟。
内容图文
把这本压箱底的书拿出来看了下,感觉还不错,就给自己记录一下。
JSON,YAML,Pickle,XML和CSV比较适合用于数据交换,主要应用于单一对象而非多个对象的场景。
Shelve支持多个对象的持久化
为了存储Python中的对象,必须先将其转换为字节,然后再将字节写入文件,这个过程成为序列化,又要数据转化,压缩,编码。
这是一本好书,超级烂的翻译,很多文字描述语句都读不通。
9.3定义用于持久化的类。
书中定义了类,通过jinja2来渲染实例。
代码写的绝对使高手,jinja的用法快忘了。
import datetime from collections import defaultdict class Post: def __init__(self, date, title, rst_text, tags): self.date = date self.title = title self.rst_text = rst_text self.tags = tags def as_dict(self): return dict( date=str(self.date), title=self.title, underline="_" * len(self.title), res_test = self.rst_text, tag_text = " ".join(self.tags) ) class Blog: def __init__(self, title, posts=None): self.title = title self.entries = posts if posts is not None else [] def append(self, post): self.entries.append(post) def by_tag(self): tag_index = defaultdict() for post in self.entries: for tag in post.tags: tag_index[tag].addend(post.as_dict()) return tag_index def as_dict(self): return dict( title = self.title, underline = ‘=‘*len(self.title), entries = [p.as_dict() for p in self.entries] ) travel = Blog("Travel") # 添加两条信息 travel.append( Post(date=datetime.datetime(2014, 11, 14, 17, 25), title="Hard Aground", rst_text="""Some embarrassing revelation. Including and cyr""", tags=("#RedRanger", "#Whiby42", "#ICW") ) ) travel.append( Post(date=datetime.datetime(2014, 11, 14, 17, 25), title="Hard Aground", rst_text="""Some embarrassing revelation. Including and cyr""", tags=("#RedRanger", "#Whiby42", "#ICW"), ) ) travel.append( Post(date=datetime.datetime(2014, 11, 18, 15, 30), title="Anchor Follies", rst_text="""Some witty epigram.Including < & > character.""", tags=("#RedRanger", "#Whiby42", "#Mistakes"), ) )
这是后续需要序列化的对象travel,书中后面首先用这个对象的一些方法进行了Jinja2模块的渲染执行,我不写了,抄这个代码让我想睡觉。
9.4使用JSON进行转储和加载
我的理解JSON就是一种理想的数据交换语言。
Python中json支持的类型与对应JSON的关系
dict: object
list,tuple: array
str: string
int, float: number
True: true
Flase: Flase
None: null
import json from t9_3 import travel print(json.dumps(travel.as_dict(), indent=4))
序列化输出,效果不打了。
我们将Python对象重写为字典,应该提供一种更好的装换方式,不必额外地创建字典(上面用了as_dict方法)
不写了,这书中代码错误太多,截取代码也有问题,中文翻译更是垃圾,有空的时候当工具书看看就算了。
原文:https://www.cnblogs.com/sidianok/p/12337842.html
内容总结
以上是互联网集市为您收集整理的Python面向对象编程指南(第9章)序列化和保存-JSON、YAML,PickleCSV和XML全部内容,希望文章能够帮你解决Python面向对象编程指南(第9章)序列化和保存-JSON、YAML,PickleCSV和XML所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。