Pythonic将'None'字符串转换为None

时间:2016-02-17 20:58:24

标签: python yaml nonetype

假设我有以下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

1 个答案:

答案 0 :(得分:7)

YAML文件中的None值实际上不是犹太洁食YAML,因为YAML使用缺少值来表示无。所以,如果你刚刚使用了正确的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'