【问题标题】:backslash in Yaml string [duplicate]Yaml字符串中的反斜杠[重复]
【发布时间】:2013-01-24 14:04:33
【问题描述】:

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

host: HOSTNAME\SERVER,5858

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

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

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

【问题讨论】:

  • 这就是 Python 上反斜杠的转义方式...
  • yaml 格式对问题重要吗?

标签: python yaml


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 非常感谢,我现在应该知道了! :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 2018-02-27
    • 2010-09-22
    相关资源
    最近更新 更多