pythonconstant_函数_Python之字符串转字典的⼩秘密,⼀起
来看看?
喜欢编程,热爱分享,希望能结交更多志同道合的朋友,⼀起在学习Python的道路上⾛得更远!
起源
srv需求是将前端传递的字符串转化为字典,后端(Python)使⽤这个字典当做参数体去请求任意接⼝。
采⽤的⽅法是使⽤json包中的loads函数, ⽰例如下:
import jsonif __name__ == '__main__': test_str = '{"status": "ok"}' test_json = json.loads(test_str) print('type -----------> %s' % type(test_json)) print('test_jso
运⾏后控制台输出如下:
type -----------> test_json -----------> {'status': 'ok'}Process finished with exit code 0back to december 歌词
snc可以看到输出是没什么⼤⽑病的,但是作为⼀个严谨的⼈,思考了⼀下业务应⽤场景后,决定再测试⼀下是否能将字符串中的整数、浮点
数、嵌套字典、数组、布尔值、空值成功转化。
小熊代网刷>smokefree⾄于元组和⽇期类型就放过他吧 : )
探索的过程
探索代码:
import jsonif __name__ == '__main__': # 整数+浮点+嵌套字典+数组测试 test_str = '{"status": {"number": 123, "float": 123.321, "list": [1,2,3, "1"]}}' test_json = json.控制台输出:
type -----------> test_json -----------> {'status': {'number': 123, 'float': 123.321, 'list': [1, 2, 3, '1']}} Process finished with exit code 0
全国乙卷语文答案
嗯,到⽬前为⽌都没啥⽑病。
然⽽
runinto
震惊!惊⼈发现
核⼼代码:
rowan atkinsonimport jsonif __name__ == '__main__': # 布尔值+空值测试 test_str = '{"status1": true, "status2": fal, "status3": null}' test_json = json.loads(test_str) print('type --控制台输出:
dannitype -----------> test_json -----------> {'status1': True, 'status2': Fal, 'status3': None}Process finished with exit code 0
相信聪明的读者已经发现,json.loads 函数可以 将字符串中的true,fal, null成功转化为True,Fal
,None。
笔者查找 json.loads 函数源码 (Ctrl + B 已经按烂) 后,发现了这⼀段代码:
elif nextchar == 'n' and string[idx:idx + 4] == 'null': return None, idx + 4 elif nextchar == 't' and string[idx:idx + 4] == 'true': return True, idx + 4 elif nextchar =
这,这代码,真硬⽓。
tiamo的意思
往下翻还有惊喜哦:
elif nextchar == 'N' and string[idx:idx + 3] == 'NaN': return par_constant('NaN'), idx + 3 elif nextchar == 'I' and string[idx:idx + 8] == 'Infinity': return par
总结
每段代码背后都有⼩秘密,仔细挖掘就会得到不⼀样的乐趣与收获。
觉得⽂章还可以的话不妨收藏起来慢慢看,有任何意见或者看法欢迎⼤家评论!