将 'None' 字符串转换为 None 的 Pythonic 方式
Pythonic way of converting 'None' string to None
假设我有以下 yaml 文件,第 4 行的值应该是 None
。如何将字符串 'None'
转换为 None
?
CREDENTIALS:
USERNAME: 'USERNAME'
PASSWORD: 'PASSWORD'
LOG_FILE_PATH: None <----------
我已经有了这个:
config = yaml.safe_load(open(config_path, "r"))
username, password, log_file_path = (config['CREDENTIALS']['USERNAME'],
config['CREDENTIALS']['PASSWORD'],
config['LOG_FILE_PATH'])
我想知道是否有 pythonic 的方法来做到这一点,而不是简单地做:
if log_file_path == 'None':
log_file_path = None
YAML 文件中的 None
值并不是真正符合 Kosher YAML 标准的 YAML,因为它使用缺少值来表示 None。因此,如果您只是使用适当的 YAML,您的麻烦就会结束:
In [7]: yaml.load("""
...: CREDENTIALS:
...: USERNAME: 'USERNAME'
...: PASSWORD: 'PASSWORD'
...: LOG_FILE_PATH:
...: """)
Out[7]:
{'CREDENTIALS': {'PASSWORD': 'PASSWORD', 'USERNAME': 'USERNAME'},
'LOG_FILE_PATH': None}
注意它如何将 LOG_FILE_PATH
的缺失读作 None
而不是 'None'
。
稍后编辑:其他也有效的值是:null
、Null
和 NULL
根据:https://yaml.org/type/null.html
假设我有以下 yaml 文件,第 4 行的值应该是 None
。如何将字符串 'None'
转换为 None
?
CREDENTIALS:
USERNAME: 'USERNAME'
PASSWORD: 'PASSWORD'
LOG_FILE_PATH: None <----------
我已经有了这个:
config = yaml.safe_load(open(config_path, "r"))
username, password, log_file_path = (config['CREDENTIALS']['USERNAME'],
config['CREDENTIALS']['PASSWORD'],
config['LOG_FILE_PATH'])
我想知道是否有 pythonic 的方法来做到这一点,而不是简单地做:
if log_file_path == 'None':
log_file_path = None
YAML 文件中的 None
值并不是真正符合 Kosher YAML 标准的 YAML,因为它使用缺少值来表示 None。因此,如果您只是使用适当的 YAML,您的麻烦就会结束:
In [7]: yaml.load("""
...: CREDENTIALS:
...: USERNAME: 'USERNAME'
...: PASSWORD: 'PASSWORD'
...: LOG_FILE_PATH:
...: """)
Out[7]:
{'CREDENTIALS': {'PASSWORD': 'PASSWORD', 'USERNAME': 'USERNAME'},
'LOG_FILE_PATH': None}
注意它如何将 LOG_FILE_PATH
的缺失读作 None
而不是 'None'
。
稍后编辑:其他也有效的值是:null
、Null
和 NULL
根据:https://yaml.org/type/null.html