具有双项和属性访问器的yaml可序列化字典

yamlns的Python项目详细描述


Build Status

一种有序字典,其值可以作为项或作为 属性,类似于javascript对象,但使用了pythonic sugar和yaml I/O.

它还提供一些好处:

  • 使用dump()load()方法直接映射到yaml。
  • 在 在yaml和python之间映射值类型的方式:
    • 内部yaml映射(dicts)加载为namespaces 而不是pythondict
    • 名称空间保留插入顺序,因为它们基于 odict。这样插入顺序和 存储时保留原始加载的文件。
    • yaml float加载为DecimalDecimal对象 作为普通的山药漂浮物储存。这样可以避免在 连续的加载/存储周期是交替的。
    • yaml日期映射到datetime.date的扩展名,该扩展名 提供输出格式作为方便调用的属性 在format模板中。
  • 具有复杂命名空间结构的format模板的工具。
    • 给定属性如accessformattemplates result 更干净。
    • 用yaml文件填充format类模板文件的api。
    • 在给定模板的情况下提取空yaml scheletton的api 替代品。
    • 用于执行这两个功能的命令行工具

示例

>>>fromyamlnsimportnamespaceasns>>>n=ns()>>>n.attribute1="value1">>>ns['attribute2']="value2">>>print(n.dump())attribute1:value1attribute2:value2>>>n.attribute2'value2'>>>n['attribute1']'value1'>>>n.update(ns.loads("""
... attribute3: value3
... attribute4:
...   attribute5: [ 4,3,2,value5 ]
...   attribute6: 2015-09-23
... attribute7:
... - value7.1
... - value7.2
... """))>>>n.attribute4.attribute5[4,3,2,'value5']>>>n.attribute4.attribute6datetime.date(2015,9,23)>>>n.attribute7['value7.1','value7.2']

模板示例:

>>>template=(..."{client.name} {client.midname[0]}. {client.surname} buys {item.name} "..."by {item.price.amount:0.02f} {item.price.coin}."...)...>>>print(ns.fromTemplate(template).dump())client:name:''midname:''surname:''item:name:''price:amount:''coin:''>>>template.format(**ns.loads("""
client:
  name: 'John'
  midname: 'Archivald'
  surname: 'Doe'
item:
  name: 'Apples'
  price:
    amount: 30
    coin: 'dollars'
"""))JohnA.DoebuysApplesby30.00dollars.

命令行工具的使用

nstemplate apply <template> <yamlfile> <output>
nstemplate extract <template> <yamlskeleton>

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
JavaSpringbean已创建但未自动连接   java LibGDX游戏在三星Galaxy Grand Prime上结束   如何在Java中列出字符串句子中所有匹配条件的单词   java在Recyclerview中使用“putExtra”传递数据   java从一个特定的数组中提取特定的JSON对象,以便在Android中通过一个意图放入另一个活动   java需要使用IntelliJ和设置项目SDK的帮助   java springcontextindexer和Swagger 3   java使用indexOf和substring计算数字   java使用xml解析在word文档中查找隐式分页符   在添加<context:componentscan basepackage=“com.young.user”/   java无条件更改JTable单元格的背景色   选择列表中的java调用oracle函数:节点无数据类型   java如何添加缓冲图像作为JFrame的背景,然后在此图像上添加面板?   java Javadoc找不到用scala编写的类   java连接到文件共享程序的IP地址   java将数组元素加载到集合中   Tomcat中的java servlet、过滤器和线程   非Bean对象中的java EJB CDI注入?   java与println和printf的不同舍入