我在单引号中有一个带键值对的词典如下:
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中做到这一点?
答案 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)