11

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

host: HOSTNAME\SERVER,5858

但是当它在这里被解析时,我得到的是:

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

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

4

2 回答 2

8

len("\\") == 1. 您看到的是字符串作为 Python 字符串文字的表示形式。反斜杠在 Python 文字中具有特殊含义,例如,"\n"是单个字符(换行符)。要在字符串中获得文字反斜杠,它应该被转义"\\"

于 2013-02-08T18:30:48.630 回答
4

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

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

有关更多背景信息,请查看repr().

于 2013-02-08T18:29:31.300 回答