我有看起来像这样的yaml:
SomeRecord:
type: array
items:
type:
- string
- number
- null
我尝试PyYAML和ruamel.yaml,它们都将
'null'
转换为None
(类NoneType)。有没有简单的方法来更改此行为?
最佳答案
您可以使用一个简单的递归函数来找到None
值并将其转换为'None'
,如下所示:
码:
def convert_none_to_str(data):
if isinstance(data, list):
data[:] = [convert_none_to_str(i) for i in data]
elif isinstance(data, dict):
for k, v in data.items():
data[k] = convert_none_to_str(v)
return 'None' if data is None else data
测试代码:
yaml_data = """
SomeRecord:
type: array
items:
type:
- string
- number
- null
"""
import yaml
data = yaml.safe_load(yaml_data)
print(data)
convert_none_to_str(data)
print(data)
结果:
{'SomeRecord': {'type': 'array', 'items': {'type': ['string', 'number', None]}}}
{'SomeRecord': {'type': 'array', 'items': {'type': ['string', 'number', 'None']}}}