如何将文本文件读取的哈希字符串写入YAML文件且不带单引号
解决PyYAML输出带0x前缀字符串时自动添加单引号的问题
问题根源
PyYAML会自动识别以0x开头的字符串为潜在的十六进制数值,为避免后续解析时的类型歧义,默认会给这类字符串添加单引号,导致输出不符合预期。
解决方案
通过yaml.scalarstring.PlainScalarString将目标字符串包装为纯标量字符串,强制PyYAML以无引号格式输出。添加sort_keys=False可保持原有YAML的键顺序(若无需保留顺序可省略)。
修改后的代码:
import yaml from yaml.scalarstring import PlainScalarString input_file_path = 'output.txt' # 读取输入文件中的哈希值 with open(input_file_path, 'r') as input_file: value = input_file.read().strip() # 读取原有YAML数据 with open('temp.yaml', 'r') as file: yaml_data = yaml.safe_load(file) # 将哈希值包装为PlainScalarString,强制无引号输出 yaml_data['DataSecurityContainer']['items'][0] = PlainScalarString(value) # 写入修改后的YAML with open('temp.yaml', 'w') as file: yaml.dump(yaml_data, file, default_style=None, sort_keys=False)
验证结果
执行后生成的YAML文件将符合预期:
DataSecurityContainer: items: - 0x88f8ad77bb388f63674991a8692618a459bec731d15e6c8cf3755050af98a075
内容的提问来源于stack exchange,提问作者Pooja Shanker
相关产品推荐
相关产品推荐

