两个不经意间的报错

ゝ一世哀愁。 2022-04-23 00:00 272阅读 0赞

文章目录

    • 前言
    • 字符串转字典
    • 字符串转数字

前言

“你应该常回头看看,才不至于迷失。”——这是我近些日子工作中总结出的句子。

我在Python中总爱追求那些高大上的东西,什么元编程,什么异步,什么描述符……其实自己连最基本的语法也遗忘了。

说来惭愧!若不是组内测试人员的“胡搅蛮缠”,我可能会永远困顿在自己的骄傲自满里。好在终究在别人的敲击下清醒过来。下面有两个极小问题引发的报错,书此以谨记之!

字符串转字典

json.loads()函数我们还是用得频繁的,大多时候,都是把字典格式的字符串转换成字典类型,这样说起来有些迷糊,其实也就是这样:'{}' --> {}

通常,字典格式的字符串来自于读取文本,另些时候也乘坐http协议而来。但我们不用在意它来自哪里,直接json.loads()就OK。——事实上,Python解释器替我们做了小小的事,我们没注意而已。

json.loads()函数要求,其传入参数字符串,必须单引号在外而双引号在内(尽管Python一直强调自己不区分单双引号,其实不总是如此)

  1. import json
  2. json.loads('{"ty":512, "yx": 829}') # 正确

如果你偏要反着来,解释器会给你JSONDecodeError的异常,就像下面这样:

  1. json.loads("{'ty':512, 'yx': 829}") # 错误
  2. JSONDecodeError......

这样的结论是适用于Python2.7和Python3.7的,我也只在俩环境中测试过。

同时,json.loads()也可以把列表格式的字符串转成列表类型,也要求单引号在外:

  1. json.loads('["ty", "yx"]') # 正确
  2. # ***********************************
  3. json.loads("['ty', 'yx']") # 错误
  4. ValueError......

019.1.22说明
今天咨询了一个前端的朋友,了解到有JSON风格指南这一东西,里边很清楚的说明了一个要求:
在这里插入图片描述
这也就是会出现上述问题的原因。

字符串转数字

业务代码中,将字符串转数字是常需要的操作。Python解释器对此操作的要求似乎颇为严格。

首先,我们知道以下转换是OK的:

  1. int("0")
  2. int("10")
  3. int("123")

而这样就不OK了:

  1. int("a") # 错误
  2. int("[]") # 错误
  3. ValueError......

事实上,浮点型格式的字符串也不能被int()转换为整数型。 也就是说,下面这样会报错:

  1. int("512.0") # 错误
  2. ValueError......

真有些不解,明明int()函数都可以传入浮点型的数字实现取整,但浮点型格式的字符串却不能被处理。

此时此刻,float()函数充分发挥了它包容的特性:

  1. float("512") # 512.0
  2. float("3.14") # 3.14

发表评论

表情:
评论列表 (有 0 条评论,272人围观)

还没有评论,来说两句吧...

相关阅读

    相关 计算经纬度点距离

    计算两个经纬度点间的距离 纬度线投射在图上看似水平的平行线,但实际上是不同半径的圆。有相同特定纬度的所有位置都在同一个纬线上。  赤道的纬度为0°,将行星平分为南半球和北