使用Ruamel/YAML如何将含换行字符串输出为块式YAML格式?
解决Ruamel/YAML导出多行内容为|-块样式的问题
核心问题在于Ruamel/YAML不会自动将普通多行字符串识别为块样式,需要手动指定类型,而非单纯替换换行符。
使用
LiteralScalarString强制生成块格式:
从ruamel.yaml.scalarstring导入该类,把新增的Formula内容包装成这个类型,dump时就会自动生成|-块样式。示例代码:from ruamel.yaml import YAML from ruamel.yaml.scalarstring import LiteralScalarString yaml = YAML() # 加载现有配置 with open('your_config.yaml', 'r') as f: config = yaml.load(f) # 包装多行Formula内容 formula_content = """first line of formula second line third line with logic""" config['new_item']['formula'] = LiteralScalarString(formula_content) # 写入文件 with open('your_config.yaml', 'w') as f: yaml.dump(config, f)处理已有的转义换行字符串:
如果之前生成的是带\n转义的字符串,先转成真实换行再包装:escaped_formula = "line1\\nline2\\nline3" raw_formula = escaped_formula.replace('\\n', '\n') config['target_item']['formula'] = LiteralScalarString(raw_formula)注意事项:
保持yaml.preserve_quotes = True(可选)可以保留原有配置的引号格式;Ruamel会自动继承原文件的缩进规则,不需要额外配置缩进参数。
内容的提问来源于stack exchange,提问作者Ryan Pond
相关产品推荐
相关产品推荐

