Вопрос прост, но немного сложный для фразы правильно.Python dict to YAML text не сохраняет символы
В принципе, у меня есть словарь, который имеет следующие данные:
x = { foo: [1, '\n', 'bar'] }
Когда я конвертировать в YAML, используя PyYAML с yaml.safe_dump(x, default_flow_style=False)
Я ожидаю, что выход будет:
foo:
- 1
- '\n'
- bar
однако, я m получить что-то вроде
foo:
- 1
- '
'
- bar
Символ новой строки фактически интерпретируется ins который передается как строка «\ n».
Я смотрел документацию на pyyaml, но не видел правильных заклинаний, чтобы правильно разобрать эту штуку.
Кто-нибудь имел дело с этим же вопросом раньше? Как вы его решили?
Чтобы больше контекста, об этом.
У меня есть json Я хочу конвертировать в yaml.
Файл, который имеет что-то вроде этого:
{
"content": {
"Fn::Join": ["\n", [{ "Ref": "parentStackName" }, ""]]
}
}
конечный результат должен быть таким:
content:
Fn::Join:
- "\n"
- - Ref: parentStackId
- ''
Обратите внимание на "\n"
это просто строка там, а не фактический характер.
Процедура я использую:
- Открыть файл
- Анализировать JSON из текста в Сыроватского
- Используйте Dict сваливать в YAML
Когда я создаю Dict, вы можете увидеть «\ n» как часть строки. Это когда пийамль сбрасывает это в ямль, что все идет вразрез.
Строка вы показали (' '\ n'') является символ новой строки, а не обратной косой черты, за которыми следует«п », поэтому вывод YAML, который вы получаете, имеет прекрасный смысл. Вы говорите, что хотите преобразовать символы, такие как newline, в их представления escape-последовательности? Или вы хотите, чтобы ваша строка была '' \\ n'' (буквальная обратная косая черта, буквальная «n»)? – ThisSuitIsBlackNot
строка является буквальной '\ n', а не новой строкой. Я задаю больше вопросов в вопросе. –
'' \ n "' в строке JSON представляет собой новую строку, а не буквальную обратную косую черту, за которой следует буква «n» (см. [Spec] (http://www.ecma-international.org/publications/files/ECMA -ST/ECMA-404.pdf)). Таким образом, вы получаете ожидаемый результат. – ThisSuitIsBlackNot