【问题标题】:Convert single quotes to double quotes for Dictionary key/value pair将单引号转换为字典键/值对的双引号
【发布时间】:2017-01-17 00:21:01
【问题描述】:

我有一个字典,其中键值对用单引号括起来,如下所示:

filename = 'sub-310621_task-EMOTION_acq-LR_bold.nii.gz'
intended_for ={"IntendedFor", filename}

因为我想将此字典写入 json 文件,所以我必须在两个引号之间有文件名,例如:"sub-310621_task-EMOTION_acq-LR_bold.nii.gz"

所以输出应该是这样的:

intended_for ={"IntendedFor", "sub-310621_task-EMOTION_acq-LR_bold.nii.gz"}

此输出将写入 test.json 文件,该文件应如下所示:

{
    "IntendedFor": "sub-310621_task-EMOTION_acq-LR_bold.nii.gz"
}

我如何在 python 中做到这一点?

【问题讨论】:

  • 请编辑您的问题以获得输出 json 的无效代码、输出是什么以及您的预期。
  • 您可以使用\"添加引号。例如filename = '\"sub-310621_task-EMOTION_acq-LR_bold.nii.gz\"'

标签: python json dictionary


【解决方案1】:

与其尝试自己构建 JSON 字符串,不如使用 json 模块进行编码。

json.dumps() 方法接受一个对象,例如具有键值对的字典,并将其转换为符合 JSON 标准的字符串,然后可以将其写入文件。

您使用逗号 , 而不是冒号 : 创建了一个集合,而不是字典

intended_for = {"IntendedFor", filename}

您输入的正确代码是

filename = 'sub-310621_task-EMOTION_acq-LR_bold.nii.gz'
intended_for ={"IntendedFor": filename}

然后就可以编码了

import json
json_string = json.dumps(intended_for)

【讨论】:

    【解决方案2】:

    字符串文字末尾的撇号或引号不包含在字符串中 - 'asdf'"asdf" 表示相同的字符串。 dict 中的键和值实际上都不包含字符 '",因此您无需执行转换。

    当您将 dict 转储为 JSON 时,您的 JSON 转储器将自动用 " 字符包围字符串,以及其他必要的转义。例如,如果你使用json 模块,你可以这样做

    json_string = json.dumps(intended_for)
    

    生成格式正确的 JSON 字符串。 (如果这不起作用,则说明您还有其他一些未向我们展示的错误。)

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-07
    • 2020-10-02
    • 1970-01-01
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-20
    相关资源
    最近更新 更多