超越python中rx的基础知识

时间:2017-06-15 08:23:05

标签: python yaml

开始使用this精彩的Rx库来验证模式的YAML文件。

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

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

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

  3. 如何在YAML计划中代表2个元组的元组?

  4. 如何为地图类型的键添加验证?例如,键是字符串,键是#34; must_be"必须在里面吗?

2 个答案:

答案 0 :(得分:2)

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

  

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

没有。正则表达式没有足够的跨平台。我为PCRE写了一个Perl-only插件,在这里: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

答案 1 :(得分:1)

解决了第1和第4期的问题:

问题1 - 我们假设颜色参数在// rec type:

的必要范围内
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}