2013-02-08 162 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"是單個字符(換行符)。要在字符串中獲得文字反斜槓,應該轉義"\\"