新书

速递

吴老的java版《selenium webdriver 实战宝典》和python版《selenium Webdriver 3.0 自动化测试框架实战指南》出版了,代码拿来就能用。

文 | 智能测试者

来源 | 微信公众号 智能自动化测试

起源

需求是将前端传递的字符串转化为字典,后端(Python)使用这个字典当做参数体去请求任意接口。

笔者采用的方法是使用json包中的loads函数, 示例如下:

import json

if __name__ == '__main__':
    test_str = '{"status": "ok"}'
    test_json = json.loads(test_str)
    print('type -----------> %s' % type(test_json))
    print('test_json -----------> %s' % test_json)

运行后控制台输出如下:

type -----------> <class 'dict'>
test_json -----------> 
{'status''ok'}

Process finished with exit code 0

可以看到输出是没什么大毛病的,但是作为一个严谨的人,思考了一下业务应用场景后,决定再测试一下是否能将字符串中的整数、浮点数、嵌套字典、数组、布尔值、空值成功转化。

字符查找工具_python字符串查找_find函数查找多个字符

至于元组和日期类型就放过他吧 : )

探索的过程

探索代码:

import json

if __name__ == '__main__':
    # 整数+浮点+嵌套字典+数组 测试
    test_str = '{"status": {"number": 123, "float": 123.321, "list": [1,2,3, "1"]}}'
    test_json = json.loads(test_str)
    print('type -----------> %s' % type(test_json))
    print('test_json -----------> %s' % test_json)

控制台输出:

    type -----------> <class 'dict'>
    test_json -----------> 
{'status': {'number'123'float'123.321'list': [123'1']}}

    Process finished with exit code 0

嗯,到目前为止都没啥毛病。

然而

字符查找工具_find函数查找多个字符_python字符串查找

震惊!惊人发现

核心代码:

import json

if __name__ == '__main__':
    # 布尔值+空值 测试
    test_str = '{"status1": true, "status2": false, "status3": null}'
    test_json = json.loads(test_str)
    print('type -----------> %s' % type(test_json))
    print('test_json -----------> %s' % test_json)

控制台输出:

type -----------> <class 'dict'>
test_json -----------> 
{'status1'True'status2'False'status3': None}

Process finished with exit code 0

相信聪明的读者已经发现,json.loads函数可以 将字符串中的true,falsepython字符串查找python字符串查找,null成功转化为True,False,None。

python字符串查找_find函数查找多个字符_字符查找工具

笔者查找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 == 'f' and string[idx:idx + 5] == 'false':
        return False, idx + 5

这,这代码,真硬气。

find函数查找多个字符_字符查找工具_python字符串查找

往下翻还有惊喜哦:

    elif nextchar == 'N' and string[idx:idx + 3] == 'NaN':
        return parse_constant('NaN'), idx + 3
    elif nextchar == 'I' and string[idx:idx + 8] == 'Infinity':
        return parse_constant('Infinity'), idx + 8
    elif nextchar == '-' and string[idx:idx + 9] == '-Infinity':
        return parse_constant('-Infinity'), idx + 9

find函数查找多个字符_python字符串查找_字符查找工具

总结

每段代码背后都有小秘密,仔细挖掘就会得到不一样的乐趣与收获。

字符查找工具_python字符串查找_find函数查找多个字符

正所谓博客驱动开发,开发只是为了更好的写作!

有任何问题欢迎随时讨论哈 : )

限时特惠:本站每日持续更新海量设计资源,一年会员只需29.9元,全站资源免费下载
站长微信:ziyuanshu688