Yaml字符串中的反斜杠
我在用yaml格式来写一些配置文件,并且用py yaml来解析它。对于某个字段,我有这样的内容:
host: HOSTNAME\SERVER,5858
但是当我在这里解析的时候,得到的结果是:
{
"host": "HOSTNAME\\SERVER,5858"
}
结果里出现了两个反斜杠。我尝试了各种单引号、双引号的组合。请问有什么好的方法可以正确解析吗?谢谢!
2 个回答
5
你看到的不是两个反斜杠。Python 显示一个反斜杠时,会用 \\
来表示,这样你就不会误以为你的字符串里有一个不存在的 \S
字符(其实是没有这个字符的……不过像 \n
这样的字符是存在的,Python 这样做是为了让你更清楚)。这里有个证明:
>>> data = {"host": "HOSTNAME\\SERVER,5858"}
>>> print(data["host"])
HOSTNAME\SERVER,5858
>>>
想了解更多背景知识,可以查看 repr()
的文档。
9
这里的len("\\") == 1
意思是说,字符串中只有一个字符。你看到的这个字符串是Python中字符串的表示方式。反斜杠在Python字符串中有特殊的含义,比如"\n"
表示的是一个字符(换行符)。如果你想在字符串中表示一个普通的反斜杠,就需要用两个反斜杠来表示,也就是"\\"
。