【问题标题】:How do I store a string with a `"` in it?如何存储带有`"`的字符串?
【发布时间】:2010-10-20 07:17:23
【问题描述】:

我想要一个 JSON 对象,其属性值为字符串,字符为 "。 例如:

{
"Dimensions" : " 12.0" x 9.6" "
}

显然这是不可能的。我该怎么做呢? 使用 Python。

【问题讨论】:

  • 作为替代方案,使用 unicode 和 DOUBLE PRIME 字符表示英寸 :) { "Dimensions" : u" 12.0″ x 9.6″ " } 。半开玩笑。

标签: python json


【解决方案1】:

Python 有两个符号可用于指定字符串文字,即单引号和双引号。

例如: my_string = "我到家了!"

或者,与您更相关,

>>> string = '{ "Dimensions" : " 12.0\\\" x 9.6\\\" " }'
>>> print string
{ "Dimensions" : " 12.0\" x 9.6\" " }

你也可以在字符串前面加上'r'来指定它是一个原始字符串,这样反斜杠转义的序列就不会被处理,使它更简洁。

>>> string = r'{ "Dimensions" : " 12.0\" x 9.6\" " }'
>>> print string
{ "Dimensions" : " 12.0\" x 9.6\" " }

【讨论】:

    【解决方案2】:

    如果使用 Javascript,JSON.stringify 将为您转义它。
    如果没有,您可以像 \" 一样将它们转义(在前面放一个 \)
    编辑:在 Python 中,尝试 re.escape() 或将所有 " 替换为 \":

    "json string".replace("\"","\\\"");
    

    【讨论】:

    • 哦,好的。有没有办法在 python 中进行转义?
    【解决方案3】:

    艾萨克是正确的。

    至于如何在 python 中进行,您需要提供更详细的说明,说明您是如何构建 JSON 对象的。例如,假设您没有使用外部库并且手动执行(荒谬,我知道),您会这样做:

    >>> string = "{ \"Dimensions\" : \" 12.0\\\" x 9.6\\\" \" }"
    >>> print string
    { "Dimensions" : " 12.0\" x 9.6\" " }
    

    显然这有点愚蠢。如果你使用的是标准的 python json 模块,试试这个:

    from json import JSONEncoder
    encoder = JSONEncoder()
    string = encoder.encode({ "Dimensions":" 12.0\" x 9.6\" " })
    
    >>> print string
    {"Dimensions": " 12.0\" x 9.6\" "}
    

    这是期望的结果。

    【讨论】:

      猜你喜欢
      • 2011-09-23
      • 2013-06-19
      • 2013-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多