Yaml字符串中的反斜杠

rem*_*miH 7 python yaml

所以我使用yaml作为一些配置文件,并使用py yaml来解析它.对于一个领域,我有类似的东西:

host: HOSTNAME\SERVER,5858
Run Code Online (Sandbox Code Playgroud)

但是当它在这里得到解析时我会得到:

{
"host": "HOSTNAME\\SERVER,5858"
}
Run Code Online (Sandbox Code Playgroud)

有2个反斜杠.我尝试了单引号,双引号等的每种组合.正确解析它的最佳方法是什么?谢谢

jfs*_*jfs 6

len("\\") == 1.你看到的是字符串表示为Python字符串文字.反斜杠在Python文字中有特殊含义,例如,"\n"是单个字符(换行符).要在字符串中获取字面反斜杠,应将其转义"\\".


Zer*_*eus 5

你没有得到两个反斜杠。Python 将单个反斜杠显示为 as \\,这样您就不会认为字符串中实际上有一个\S字符(该字符不存在......但例如确实存在\n,并且 Python 试图尽可能明确)。这是证明:

>>> data = {"host": "HOSTNAME\\SERVER,5858"}
>>> print(data["host"])
HOSTNAME\SERVER,5858
>>> 
Run Code Online (Sandbox Code Playgroud)

有关更多背景信息,请查看 的文档repr()