Python爬虫之json.loads()、json.load()、json.dump()以及json.dumps()的区别

  • json.dumps(),用于数据类型的转换
    json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。
import json

test1_dict = {'NAME': 'sw', 'phone': '10086'}
print(test1_dict)
print('json.dumps转换前的类型是:', type(test1_dict))

test1_str = json.dumps(test1_dict)
print(test1_str)
print('json.dumps转换后的类型是:', type(test1_str))

执行结果如下:

json.dumps().png
  • json.loads(),用于数据类型的转换
    json.loads()用于将str类型的数据转成dict,因为如果爬虫解码孩子后得到的是网页的字符串,不转换成python类型的数据,无法进行数据提取。
import json

test1_dict = {'NAME': 'sw', 'phone': '10086'}
print(test1_dict)
print('json.dumps转换前的类型是:', type(test1_dict))

test1_str = json.dumps(test1_dict)
print(test1_str)
print('json.dumps转换后的类型是:', type(test1_str))

test2_dict = json.loads(test1_str)
print(test2_dict)
print('json.loads转换后的类型是:', type(test2_dict))

执行结果如下:

json.loads().png
  • json.dump(),跟文件结合一起使用
    json.dump()需要两个参数,没有返回值,多与“w”连用,用于将dict类型的数据转成str,并写入到json文件中。它在底层做了两件事,一件事是将对象(列表)转换为字符串,第二件事是转换成功以后,将转换后的数据写入到文件中。
import json

test1_dict = {'NAME': 'sw', 'phone': '10086'}
print(test1_dict)
print('test1_dict的类型是:', type(test1_dict))
with open('text1.txt', 'w') as f:
    json.dump(test1_dict, f)

执行结果得到一个text1.txt文件。

json.dump().png
  • json.load(),跟文件结合一起使用
    json.load()用于从json文件中读取数据。与读 “r”连用多,可读出文件的内容,并打印出来。
import json

test1_dict = {'NAME': 'sw', 'phone': '10086'}
print('test1_dict的类型是:', type(test1_dict))
with open('text1.txt', 'w') as f:
    json.dump(test1_dict, f)
    f.closed
with open('text1.txt', 'r') as f:
    test1_str = json.load(f)
    print(test1_str)

执行结果打印出来text1.txt中的内容。

json.load().png

总结

json.loads()、json.dumps():就是用来进行数据类型的转换。
json.load()、json.dump():只能跟文件结合一起使用。

作者:咸甜怪
链接:https://www.jianshu.com/p/28894eeb0793
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。