簡體   English   中英

是否可以在 python 中限制 YAML 布爾值文字?

[英]Is it possible to limit YAML bool value literal in python?

我正在使用 YAML 來描述一些配置,這些配置將由使用ruamel的 Python 工具讀取。 問題是我需要大量使用字符串文字 ON 並且在 YAML 中沒有引號的 ON 將被視為 bool 值true 我必須仔細引用那些“ON”,否則該工具會引發意外結果。

可不可以告訴ruamel只把truefalse當作bool,而對於其他的關鍵字比如ON,是的,就把它們當作字符串字面量來處理,以減少出錯的機會? 對於這個用例,我認為我不必堅持 YAML 規范,因為配置文件被其他人處理的可能性很小。

我假設您使用的是ruamel.yaml而不是 ruamel 中的其他一些包。 命名空間。 如果沒有一些代碼,很難看出你做錯了什么,但如果你使用默認加載器,你將獲得一個用於加載Onon的字符串。

import sys
import ruamel.yaml

yaml_str = """\
- True
- On
- on
"""
    
yaml = ruamel.yaml.YAML()
data = yaml.load(yaml_str)
print(data)

這使:

[True, 'On', 'on']

如果您的文檔有%YAML 1.1指令,或設置yaml.version = (1, 1), then On 將被讀取為 boolean:

import sys
import ruamel.yaml

yaml_str = """\
- True
- On
- on
"""
    
yaml = ruamel.yaml.YAML()
yaml.version = (1, 1)
data = yaml.load(yaml_str)
print(data)

這使:

[True, True, True]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM