Yaml安全加载文件中的特殊字符°

时间:2019-08-28 07:28:29

标签: python yaml pyyaml

我正在尝试使用PyYAML读取yml配置文件。请参见以下此类文件示例。所需字段可能包含特殊字符,例如°。以下示例中的结果字符串不是所需的°C,而是°C

目标是仅读取°C。我可以控制配置文件,因此转义或引用不是问题。以后也可以进行解码,替换或其他操作,但它们也应适用于没有特殊字符的字符串和具有其他特殊字符的字符串。

但是到目前为止,我在这条路上没有成功。

示例

test.yml

super_important_variable: °C

代码

import yaml
with open('test.yml', 'r') as open_yml:
    print(yaml.safe_load(open_yml))

当前结果

{'super_important_variable': '°C'}

所需结果

{'super_important_variable': '°C'}

奇怪的是,这将返回正确的结果:

import yaml
yml_str = "super_important_variable: °C"
yaml.safe_load(yml_str)

> {'super_important_variable': '°C'}

1 个答案:

答案 0 :(得分:1)

尝试一下:

import yaml
with open('test.yaml', 'r', encoding='utf-8') as open_yml:
    print(yaml.safe_load(open_yml))
  

更多有关python编码和文件的信息:Unicode (UTF-8) reading and writing to files in Python