我的yaml看起来像这样:
SomeRecord:
type: array
items:
type:
- string
- number
- null
我尝试PyYAML和ruamel.yaml他们都将'null'
转换为None
(类NoneType)。
有没有简单的方法来改变这种行为?
答案 0 :(得分:1)
您可以使用简单的递归函数来查找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']}}}