在工作中经常会遇到员工A给员工B通过微信发送一个JSON字符串的场景,而如果直接复制微信中发过来的JSON应用到某些软件中就会报错,如放入Postman中作为请求体数据,就会出现异常,原因是从微信里粘贴过来的JSON都会带有看不见的空格,我们把它放入pycharm编辑器中就会显现出来很多NBSP,如图
解决方案:将下列代码块中的json替换成需要过滤NBSP的JSON字符串后运行即可生成过滤NBSP之后的JSON,将过滤后的JSON复制到postman等工具中就不会报错了。
change_char = \
'''
{
"username": "liuguoxing",
"paswd": "123456",
"id": "1998"
}
'''
new_str = "".join(str(change_char).split())
print(new_str)
结果:
{"username":"liuguoxing","paswd":"123456","id":"1998"}
验证有效性:
为了证实过滤后的内容支持JSON语法且没有语法错误,可进入json.cn进行验证:
点击进入json.cn可对json数据美化并验证错误http://json.cn
效果图:
可以清晰的看到右侧可以正常展示出美化后的json样式,说明过滤后组成的json没有任何问题,如果有错的话就会有报错信息提示了,在日常工作中也可以通过这种方式快速有效的验证自己写的json是否存在问题,以及对json进行美化。
将以上代码封装成方法后可实现快速将异常字符剔除,配合if方法和初始值为None的空列表可进行二次过滤。
上文中使用的方法是split(),相当于是根据空格把整个string字符串分割成了多份放入了列表中:
['{', '"username":', '"liuguoxing",', '"paswd":', '"123456",', '"id":', '"1998"', '}']
再使用join方法将这些元素拼接了起来,形成了过滤后的结果。
其实还有方案二:使用strip函数
str.strip('要删除的内容')
可以直接使用此方法剔除所有的NBSP空格,且支持lstrip()和rstrip()的人性化用法(仅删除左侧或右侧的指定内容)
#使用strip()方法
new_str = "".join(str(change_char).strip())
print(new_str)
结果:
{
"username": "liuguoxing",
"paswd": "123456",
"id": "1998"
}
❤关注我,不迷路❤
******我的本文相关专栏******
******我的其它作品专栏******