一种简单的pythonic文件格式。与

perk的Python项目详细描述


活泼

友好、简单的pythonic文本文件格式

拉里·黑斯廷斯版权所有2018-2019

概述

perky是python程序的一种新的、简单的“rcfile”文本文件格式。

以下是一些有趣的功能:

活泼的语法

漂亮的配置文件看起来像json,没有 引用。

example name = value
example dict = {
    name = 3
    another name = 5.0
    }
example list = [
    a
    b
    c
    ]
# lines starting with hash are ignored

# blank lines are ignored

" quoted name " = " quoted value "

triple quoted string = """

    indenting
        is preserved

    the string is automatically outdented
    to the leftmost character of the ending
    triple-quote

    <-- aka here
    """

显式转换优于隐式转换

一个可能令人惊讶的设计选择:唯一的 Perky解析器本机支持的值是dict, 列表和字符串。其他常用类型(int、float和 etc)使用不同的机制进行处理:转换。

活泼的转换以dict作为输入,并转换 基于schema的dict内容。活泼的计划 是一个与所产生的dict形状相同的dict 但它包含了指令,列表, 以及转换函数。 如果希望{'myvalue':'3'}中的myvalue为实整数, 用模式{'myvalue': int}转换它。

api

perky.loads(s) -> d

分析包含特殊文件格式设置的字符串。 返回一个dict。

perky.load(filename, encoding="utf-8") -> d

分析包含特殊文件格式设置的文件。 返回一个dict。

perky.dumps(d) -> s

将字典转换为漂亮的文件格式字符串。 字典中的键都必须是字符串。价值观 不是dict、list或string的将被转换 到使用str的字符串。 返回字符串。

perky.dump(filename, d, encoding="utf-8")

将字典转换为灵活的文件格式字符串 使用perky.dump,然后将其写入filename

perky.map(d, fn) -> o

在字典上迭代。返回一个新字典, 对于每个value

  • 如果是dict,请替换为新的dict。
  • 如果是列表,则替换为新列表。
  • 如果既不是dict也不是list,则替换为 fn(value)

传入的函数称为转换函数

perky.transform(d, schema, default=None) -> o

递归地将一个活泼的指令转换成另一个 对象(通常是dict)使用提供的模式。 返回新的dict。

一个schema是一个数据结构,它与一般预期的 d的形状,其中的值是dict、list和 可召回。转换类似于perky.map() 除了个别值将有个别转换 功能。此外,还可以指定模式转换函数 对于d中的任何值,甚至是dict或list。

default是默认的转换函数。如果有 值d中的vschema中没有等效项, 并且v既不是列表也不是dict,如果default是 可调用的v将替换为 输出。

perky.Required

实验性的。

perky.nullable(fn) -> fn

实验性的。

perky.const(fn) -> o

实验性的。

待办事项

  • 反斜杠引用目前做的是“无论您的python版本做什么”。也许这应该是明确的,并由perky自己解析?

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

推荐PyPI第三方库


热门话题
JavaFX进度条从单独的函数更改而来   jvm使用java服务器选项   java在<li>元素中查找同名的最后一个链接   java问题将参数传递给不同公共类中的构造函数   如何在php中从java函数中获取字符串   java如何在Android中动态显示多个tile   java仅使用Ribbon而不使用任何服务注册表是否可以实现负载平衡?   Jersey 1.19版本的java Swagger JAXRS出现“冲突URI模板”错误   带H2数据库的java Spring boot jpa   从12:00:00到00:00:00的日期转换   Android中的java如何设置文本?   java密钥库“不支持的保护参数”   http使用Java在Java中发送httprequest。净包   SpringJava刷新数据库   java在Spring Boot应用程序中使用嵌入式MongoDb和MongoTemplate失败   java需要什么MatOfMatch对象?   xml使用Java中的合并算法将两个值合并为单个值   java SQLite数据库不保存数据为什么不工作