【问题标题】:beyond basics with rx in python在 python 中使用 rx 超越基础
【发布时间】:2017-07-08 04:52:26
【问题描述】:

开始使用 this 出色的 Rx 库来根据架构验证 YAML 文件。

只是想知道,我是否可以将它用于更高级的东西,例如:

  1. 如果给定的字符串值在已知范围内。示例:值颜色必须是红色/蓝色/绿色

  2. 我可以使用正则表达式吗?示例:已知文件格式是 .txt 或 .log,因此我想验证具有这些格式的任何文件 - *.txt / *.log

  3. 如何在 YAML 方案中表示 2 个整数的元组?

  4. 如何向地图类型的键添加验证?比如key是字符串,key“must_be”必须在里面?

【问题讨论】:

  • 您是否尝试过在邮件列表中询问?
  • 不,你能帮我介绍一下吗
  • listbox.com/subscribe/?list_id=137345 在您所指的页面底部提到。
  • 已发送消息。如果我得到答案,我会在这里发布

标签: python yaml


【解决方案1】:

您似乎已经自己解决了其中两个问题。另外两个:

我可以使用正则表达式吗?示例:已知文件格式是 .txt 或 .log,因此我想验证具有这些格式的任何文件 - *.txt / *.log

没有。正则表达式不够跨平台。我为 PCRE 写了一个仅 Perl 的插件,在这里:https://metacpan.org/release/Data-Rx-Type-PCRE

使用 PCRE 为任何语言编写兼容的 PCRE 插件应该很容易。或者,如果你只使用一种语言,你可以用那种语言编写一个插件来满足你的需要,比如 /my/string-ending-with {substr:".txt"} 等等。

如何在 YAML 方案中表示 2 个整数的元组?

您有几个选择。我会写:

type: //seq contents: - type: //int - type: //int

另一种选择:

type: //arr contents: //int length: min: 2 max: 2

【讨论】:

    【解决方案2】:

    已解决的问题 1 和 4:

    问题 1 - 假设 color 参数在 //rec 类型中的要求范围内:

    color: {type: //any, of: [
                              {type: //str, value: red},
                              {type: //str, value: green},
                              {type: //str, value: blue}
            ]}
    

    问题 4:

    如果您的键是字符串,您可以使用 //rec 类型来指示必须和可选键以及您支持哪些键名:

    some_map: {type: //rec,
    required: 
    must_have_key1: type: //str,
    must_have_key2: type: //str}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多