Вы можете указать кодек, который должен использоваться при выгрузке данных с использованием PyYAML, но вы не можете указать свой код в PyYAML при загрузке.Однако PyYAML будет обрабатывать Unicode в качестве входных данных, и вы можете явно указать, какой кодек использовать при открытии файла для чтения, этот кодек затем используется для возврата текста (вы открываете файл как текстовый файл с 'r'
, который используется по умолчанию дляopen()
).
import yaml
YAML_FILE = 'input.yaml'
with open(YAML_FILE, encoding='utf-8') as stream:
data = yaml.safe_load(stream)
Обратите внимание, что вам почти никогда не придется использовать yaml.load()
, , который задокументирован как небезопасный , вместо этого используйте yaml.safe_load()
.
Для сбросаdata
в том же формате, в котором вы его загрузили, используйте:
import sys
yaml.safe_dump(data, sys.stdout, allow_unicode=True, encoding='utf-8',
default_flow_style=False)
default_flow_style
необходим для того, чтобы не получать фигурные скобки в стиле потока, а allow_unicode
необходим, иначе вы получитеdata: "\xE3"
(т.е. escape-последовательности для символов Юникода)