将单引号转换为字典键/值对的双引号

时间:2016-09-08 23:24:27

标签: python json dictionary

我在单引号中有一个带键值对的词典如下:

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中做到这一点?

2 个答案:

答案 0 :(得分:4)

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

当您将dict转储到JSON时,您的JSON转储器将自动包含"个字符的字符串,以及其他必要的转义。例如,如果您使用的是json模块,则可以执行

json_string = json.dumps(intended_for)

生成格式正确的JSON字符串。 (如果这不起作用,你还有其他一些你没有告诉我们的错误。)

答案 1 :(得分:3)

您应该使用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)
相关问题