Python yaml 按原样转储表情符号

Python yaml dump emojis as is

我正在使用 python 3.9.5PyYaml 5.4.1

我有一个包含以下内容的文件 t.yml

- ⬆️

我写了一个简单的 python 代码,用于读取 yaml 文件并将其转储回来。

import yaml

with open("t.yml") as file:
    con = yaml.safe_load(file)
    print(con)
    with open("t.yml","w") as file:
        yaml.dump(con,file)

代码的输出是:

['⬆️']

转储yaml后,t.yml文件变成这样:

- "\u2B06\uFE0F\U0001F622"

如何以完全相同的格式转储表情符号,我加载了它们?

通常,YAML 在加载文件时会丢失信息 (),因此您不能总是按照写入的方式转储文件,因为有关写入方式的信息已经丢失。

在这种情况下,解决方案是设置 allow_unicode:

import sys,yaml

input = """
- ⬆️
"""

con = yaml.safe_load(input)
yaml.dump(con,sys.stdout, allow_unicode=True)

输出:

- ⬆️