這個問題很簡單,但要正確地用詞組有點棘手。對YAML文本的Python字典不保留字符
基本上,我有一個具有以下數據字典:
x = { foo: [1, '\n', 'bar'] }
當我轉換使用pyyaml到YAML與yaml.safe_dump(x, default_flow_style=False)
我期望的輸出是:
foo:
- 1
- '\n'
- bar
然而,我m得到像
foo:
- 1
- '
'
- bar
換行字符實際上是在解釋tead被作爲'\ n'字符串傳遞。
我一直在尋找pyyaml文檔,但沒有看到正確的咒語讓這個東西解析正確。
有沒有人處理過同樣的問題?你是如何解決它的?
爲了給出更多的上下文,關於這個。
我有一個json我想轉換爲yaml。
有像這樣的文件:
{
"content": {
"Fn::Join": ["\n", [{ "Ref": "parentStackName" }, ""]]
}
}
最終的結果應該是這樣的:
content:
Fn::Join:
- "\n"
- - Ref: parentStackId
- ''
通知"\n"
只是一個字符串在那裏,而不是實際的字符。
我使用的程序是:
- 打開文件從文本
- 解析JSON與dict
- 使用字典轉儲到YAML
當我創建了字典,你可以看到「\ n」作爲字符串的一部分。這是pyyaml轉儲到yaml時發生錯誤的原因。
你顯示的字符串(''\ n'')是一個換行符,而不是一個反斜槓後跟一個文字「N 「,所以你得到的YAML輸出非常有意義。你是否說你想要將諸如換行符這樣的字符轉換爲它們的轉義序列表示?或者你想讓你的字符串爲''\\ n''(文字反斜槓,文字「n」)? – ThisSuitIsBlackNot
該字符串是文字'\ n',而不是換行符。我在這個問題上給了更多的背景。 –
'「\ n」'在JSON字符串中表示一個換行符,而不是一個字面反斜槓,後跟一個字符「n」(參見[spec](http://www.ecma-international.org/publications/files/ECMA -ST/ECMA-404.pdf))。所以你會得到預期的結果。 – ThisSuitIsBlackNot