我希望能够采用下面定义的 YAML 并将其转换为字典。
development:
user:dev_uid
pass:dev_pwd
host:127.0.0.1
database:dev_db
production:
user:uid
pass:pwd
host:127.0.0.2
database:db
我已经能够使用 YAML 库来加载数据。但是,我的字典似乎将环境项包含为一个长字符串。
这段代码:
#!/usr/bin/python3
import yaml
config = yaml.load(open('database.conf', 'r'))
print(config['development'])
产生以下输出。
user:dev_uid pass:dev_pwd host:127.0.0.1 database:dev_db
我无法通过键名访问任何条目或随后使用
yaml.load
加载该字符串方法。print(config['development']['user'])
此代码产生以下错误:
TypeError: string indices must be integers
理想情况下,我希望得到一个返回字典或
list
的解析函数。所以我可以通过键名或使用 dot
访问属性运营商喜欢:print(config['development']['user'])
config.user
我哪里错了?
最佳答案
您的“yaml”不是映射的映射,而是字符串的映射。在 YAML 1.2 中,块映射条目 need whitespace after the separator ,例如
development:
user: dev_uid
pass: dev_pwd
host: 127.0.0.1
database: dev_db
production:
user: uid
pass: pwd
host: 127.0.0.2
database: db
不要尝试预处理此文本。相反,找到谁生成了标记和 throw the spec at them .
关于python - 解析 yaml 文件并获取字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50472011/