如何避免ruamel.yaml.round_trip_dump()输出时插入//符号
解决ruamel.yaml转储时自动插入//符号的问题
问题场景
我的YAML文件中有如下键值对:
- name: Java_opts value: " -blablabla -blablabla -blablabla -blablabla -blablabla"
使用ruamel.yaml.round_trip_dump()方法并开启preserve_quotes参数转储后,字符串中被自动插入//符号,结果如下:
- name: Java_opts value:" -blablabla -blablabla // - blablabla -blablabla // -blablabla"
解决方案
这些//是ruamel.yaml处理长字符串自动换行时添加的延续标记,可通过以下方式消除:
设置超大输出宽度:
调用round_trip_dump时指定width参数为远大于字符串长度的值,避免触发自动拆分逻辑。示例代码:import ruamel.yaml yaml = ruamel.yaml.YAML() yaml.preserve_quotes = True yaml.width = 1000 # 宽度设为足够大,防止字符串被拆分 # data为你的YAML数据结构 with open('output.yaml', 'w') as f: yaml.dump(data, f)升级ruamel.yaml版本:
旧版本的ruamel.yaml可能存在这类自动添加延续标记的行为,升级到最新稳定版本后该问题可能被修复。
内容的提问来源于stack exchange,提问作者NAVEEN
相关产品推荐
相关产品推荐

