aah*_*nik 3 python encoding yaml pyyaml
我正在使用python 3.9.5, 和PyYaml 5.4.1.
t.yml我有一个包含以下内容的文件。
- \xe2\xac\x86\xef\xb8\x8f\nRun Code Online (Sandbox Code Playgroud)\n我编写了一个简单的 python 代码,用于读取 yaml 文件并将其转储回来。
\nimport yaml\n\nwith open("t.yml") as file:\n con = yaml.safe_load(file)\n print(con)\n with open("t.yml","w") as file:\n yaml.dump(con,file)\nRun Code Online (Sandbox Code Playgroud)\n代码的输出是:
\n[\'\xe2\xac\x86\xef\xb8\x8f\']\nRun Code Online (Sandbox Code Playgroud)\n转储yaml后,t.yml文件变成这样:
- "\\u2B06\\uFE0F\\U0001F622"\nRun Code Online (Sandbox Code Playgroud)\n如何以与我加载的完全相同的格式转储表情符号?
\n通常,YAML 在加载文件时会丢失信息(请参阅此问题),因此您不能总是按照其编写方式转储它,因为有关其编写方式的信息已丢失。
\n在这种情况下,解决方案是设置allow_unicode:
import sys,yaml\n\ninput = """\n- \xe2\xac\x86\xef\xb8\x8f\n"""\n\ncon = yaml.safe_load(input)\nyaml.dump(con,sys.stdout, allow_unicode=True)\nRun Code Online (Sandbox Code Playgroud)\n输出:
\n- \xe2\xac\x86\xef\xb8\x8f\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
500 次 |
| 最近记录: |