首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >JSON字符串提供KeyError的字符串格式

JSON字符串提供KeyError的字符串格式
EN

Stack Overflow用户
提问于 2013-05-03 10:30:18
回答 2查看 19.2K关注 0票数 35

为什么这段代码会给出一个KeyError

代码语言:javascript
运行
AI代码解释
复制
output_format = """
{ 
    "File": "{filename}", 
    "Success": {success}, 
    "ErrorMessage": "{error_msg}", 
    "LogIdentifier": "{log_identifier}" 
}
"""

print output_format.format(filename='My_file_name',
                           success=True,
                           error_msg='',
                           log_identifier='123')

错误消息:

代码语言:javascript
运行
AI代码解释
复制
KeyError: ' "File"'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-03 10:31:26

你需要双倍的大括号;否则Python会认为{ "File"..也是一个引用:

代码语言:javascript
运行
AI代码解释
复制
output_format = '{{ "File": "{filename}", "Success": {success}, "ErrorMessage": "{error_msg}", "LogIdentifier": "{log_identifier}" }}'

结果:

代码语言:javascript
运行
AI代码解释
复制
>>> print output_format.format(filename='My_file_name',
...                            success=True,
...                            error_msg='',
...                            log_identifier='123')
{ "File": "My_file_name", "Success": True, "ErrorMessage": "", "LogIdentifier": "123" }

如果您正在生成JSON输出,那么最好使用json module

代码语言:javascript
运行
AI代码解释
复制
>>> import json
>>> print json.dumps({'File': 'My_file_name',
...                   'Success': True,
...                   'ErrorMessage': '',
...                   'LogIdentifier': '123'})
{"LogIdentifier": "123", "ErrorMessage": "", "Success": true, "File": "My_file_name"}

请注意输出中的小写true,这是JSON标准所要求的。

票数 72
EN

Stack Overflow用户

发布于 2020-10-20 17:43:52

正如都铎在给另一个答案的comment中提到的那样,Template类是最适合我的解决方案。我正在处理嵌套的字典或字典列表,但处理这些字典并不简单。

使用模板虽然解决方案非常简单。

我从一个转换为字符串的字典开始。然后,我将所有{实例替换为${,它是用来替换占位符的模板标识符。

实现这一点的关键点是使用模板方法safe_substitute。它将替换所有有效的占位符,如${user_id},但忽略字典结构中的任何无效占位符,如${'name': 'John', ...

替换完成后,我删除了所有剩余的$,并将字符串转换回字典。

在下面的代码中,resolve_placeholders返回一个字典,其中每个键都与有效负载字符串中的一个占位符匹配,并且值被模板类替换。

代码语言:javascript
运行
AI代码解释
复制
from string import Template
.
.
.
payload = json.dumps(payload)
payload = payload.replace('{', '${')
replace_values = self.resolve_placeholders(payload)
if replace_values:
    string_template = Template(payload)
    payload = string_template.safe_substitute(replace_values)
payload = payload.replace('${', '{')
payload = json.loads(payload)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16356810

复制
相关文章
一、导航菜单_苹果cms什么导航菜单
即页面样式,组成很简单,即一个文本输入框<input>和一个搜索图标,这里图标可以自行搜索下载一个,或者像下面一样使用在线图标,全部代码如下:
全栈程序员站长
2022/09/19
4.1K0
一、导航菜单_苹果cms什么导航菜单
Jekyll 文章侧边索引导航
  Jekyll 与 Hexo 不同之处有很多,其中一处是在文章页面中不支持原生 [TOC] Markdown 语法来自动生成目录。而在 Hexo 中,即使主题不支持侧边悬浮的优化目录导航,也可以通过最简单的方式在文章的开始位置生成目录。虽然这种目录永远固定在文章开始的地方,但是总算是能够通过大小标题来给读者一个大概的思路。
zhonger
2022/10/28
1.6K0
Jekyll x Liquid 控制文章列表只显示特定类别的Post
这个也很简单, 只需要立一个 Flag循环判断是否含有这个 Tag 就行 o(
szhshp
2022/08/15
4830
转义,解决花括号在 Jekyll 被识别成 Liquid 代码的问题
发布于 2017-10-12 16:08 更新于 2018-08-12 06:49
walterlv
2018/09/18
1.4K0
各类导航菜单
以下内容由于涉及到很多学习DEMO 和 下载链接,建议在PC端查看。以下资料都来自站长素材。
用户7293182
2022/01/17
2.4K0
HTML导航菜单
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159456.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/17
6.1K0
使用 WordPress 的导航菜单
WordPress 原来默认的导航菜单只能是页面,或者分类,或者两者,如果想自己加入一个自定义链接都需要修改主题,非常不方便,所以一个完全可定制化的自定义的 WordPress 导航菜单成了所有人的需求。
Denis
2023/04/14
2K0
使用 WordPress 的导航菜单
导航菜单优化制作
摘要总结:本文主要介绍了如何利用JavaScript语言实现一个具有轮播效果和鼠标悬浮弹出菜单的导航菜单。首先介绍了JavaScript语言的基础知识,然后详细讲解了如何利用JavaScript语言实现轮播效果和鼠标悬浮弹出菜单。最后介绍了如何使用JavaScript语言实现导航菜单的交互功能。
IMWeb前端团队
2017/12/29
3.7K0
导航菜单优化制作
导航菜单优化制作
以前制作导航菜单,总要加许多id在HTML中,js代码也要将id挨个加上去,今日终于习得破解之法,不在用以前那种笨拙的方法了。
IMWeb前端团队
2019/12/03
2.7K0
wordpress输出导航菜单
更多参照 https://developer.wordpress.org/reference/functions/wp_get_nav_menu_items/
切图仔
2022/09/14
1.8K0
wordpress输出导航菜单
bootstrap nav 导航菜单
nav nav-tabs <p>标签式的导航菜单</p> <ul class="nav nav-tabs"> <li class="active"><a href="#">Home</a></li> <li><a href="#">SVN</a></li> <li><a href="#">iOS</a></li> <li><a href="#">VB.Net</a></li> <li><a href="#">Java</a></li> <li><a href="#">PHP</a></li> </ul>
用户5760343
2019/07/05
4.9K0
bootstrap nav 导航菜单
layui响应式导航(菜单)
今天来分享一套自己写的layui响应式导航栏菜单,网络上搜索无果,只能自己写了,现在分享出来。
申霖
2019/12/27
5.1K0
layui响应式导航(菜单)
为带有多种语言的 Jekyll 博客添加多语言选择
发布于 2018-03-06 06:47 更新于 2018-09-01 00:13
walterlv
2018/09/18
1.6K0
二级导航菜单[通俗易懂]
本文用html5+css实现了二级导航菜单,二级导航菜单在网站建设中使用的越来越广泛。 效果图如下:
全栈程序员站长
2022/09/19
5.1K0
二级导航菜单[通俗易懂]
jquery导航菜单「建议收藏」
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159432.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/17
5.9K0
jquery导航菜单「建议收藏」
bootstrap 常用导航菜单样式
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Bootstrap 实例 - 标签页与胶囊式标签页</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://cdn.staticfile.org/jquery/2.1.1/jquery.min.js"></script> <script src="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body>
用户5760343
2019/07/05
6.3K0
Suffusion设置主导航菜单
换用Suffusion主题之后,把菜单栏变成导航横到网站上方了,但是过了很久之后发现不知道以前从哪里设置的这些东西,今天偶然又找到,赶紧记录下来,以防忘记。
the5fire
2019/02/28
1.4K0
Element UI导航菜单(NavMenu),动态多级菜单实现
今天同事封装一个导航栏的组件,使用的 Element UI 的 NavMenu 组件。
德顺
2020/12/28
15.2K0
html导航栏可以展开的下拉菜单,html导航栏下拉菜单如何制作[通俗易懂]
小编给大家分享一下html导航栏下拉菜单如何制作,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!
全栈程序员站长
2022/09/01
8.9K0
点击加载更多

相似问题

如何在mysql工作台中更改字体大小?

10

在控制台中动态更改字体

41

如何在mysql工作台中更改varchar

14

在MySQL工作台中连接MySQL失败

14

如何在mysql工作台中更改用户

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文