Yaml字符串中的反斜杠

时间:2013-02-08 18:14:15

标签: python yaml

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

host: HOSTNAME\SERVER,5858

但是当我在这里解析得到的东西时:

{
"host": "HOSTNAME\\SERVER,5858"
}

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

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:4)

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

>>> data = {"host": "HOSTNAME\\SERVER,5858"}
>>> print(data["host"])
HOSTNAME\SERVER,5858
>>> 

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