Yaml安全地从文件中加载特殊字符°。

0 人关注

我正试图使用PyYAML读取一个yml配置文件。请看下面这个文件的例子。所需的字段可能包含一个特殊字符,如 ° 。在下面的例子中,产生的字符串不是想要的 °C ,而是 °C

我们的目标是只读 °C 。我对配置文件有控制权,所以转义或引用不是问题。此外,解码、替换或事后的其他操作也是可能的,但它们也应该对没有特殊字符的字符串和有其他特殊字符的字符串有效。

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

Example

test.yml

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

Current result

{'super_important_variable': '°C'}

Desired result

{'super_important_variable': '°C'}

奇怪的是,这样做的结果是正确的。

import yaml
yml_str = "super_important_variable: °C"
yaml.safe_load(yml_str)
> {'super_important_variable': '°C'}
    
python
yaml
pyyaml
Laurens Koppenol
Laurens Koppenol
发布于 2019-08-28
1 个回答
olinox14
olinox14
发布于 2019-08-28
已采纳
0 人赞同

Try this:

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