2013-02-08 165 views
4

所以我使用yaml来处理一些配置文件和py yaml来解析它。 对于一个领域我有类似:Yaml字符串中的反斜线

host: HOSTNAME\SERVER,5858 

但是,当它被这里分析我所得到的:

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

随着2个反斜线。我试过每个单引号,双引号等组合。 解析正确的最佳方法是什么? 谢谢

+0

这就是反斜杠如何逃脱Python ... – JBernardo 2013-02-08 18:23:33

回答

3

你没有得到两个反斜杠。 Python会将单个反斜杠显示为\\,这样您就不会觉得自己实际上已获得\S字符(该字符不存在,但例如\n的确如此,并且Python试图尽可能清晰)串。这里是证明:

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

欲了解更多的背景,请查看文档repr()

+0

非常感谢,我现在应该知道! :) – remiH 2013-02-08 20:51:49

5

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