我正在尝试从Python对象生成一个YAML文件,其中我有一些字面字符串属性pattern = "^[0-9]+$"
,要添加到同名节点pattern
作为文件夹块。
代码
到目前为止,我已经进展到以下代码:
import yaml
class MyDumper(yaml.Dumper):
def increase_indent(self, flow=False, indentless=False):
return super(MyDumper, self).increase_indent(flow, False)
source = {'row_filters':{'NONE':{'filter_sql_expr': True}},
'rule_dimensions': ['completeness','conformance'],
'rules': {'VALID_CUSTOMER_ID': {'rule_type': 'REGEX', 'dimension': 'accuracy', 'params': {'pattern': "^[0-9]+$"}}}}
print(yaml.dump(source, Dumper=MyDumper, default_flow_style=False,sort_keys=False,indent=2,allow_unicode=True))
实际的YAML输出
row_filters:
NONE:
filter_sql_expr: True
rule_dimensions:
- completeness
- conformance
rules:
VALID_CUSTOMER_ID:
rule_type: REGEX
dimension: accuracy
params:
pattern: ^[0-9]+$
期望的 YAML 输出
row_filters:
NONE:
filter_sql_expr: |-
True
rule_dimensions:
- completeness
- conformance
rules:
VALID_CUSTOMER_ID:
rule_type: REGEX
dimension: accuracy
params:
pattern: |-
^[0-9]+$
招聘
我需要为多行块添加|-
,并使用block chomping indicator - 以便将字符串作为块文字添加。
问题
- 如何强制使用
|-
将字符串添加到块样式中? - 如何将该方法添加到我的Dumper类中进行转换?
eval
方法,例如eval('literal_str(ptrn)')
? - Prakash Dahal