Python request的content和text对象以及字符串和字节字符串(编码解码)的总结

首先提一下request的两个对象:.content和.text

两者的区别是什么,究竟怎么用这两个对象?
首先来看个例子:

import requests
response = requests.get('https://www.baidu.com')
response.encoding = 'utf-8'
re_text = response.text
re_content = response.content
print(type(re_text))
print(type(re_content))
print(re_text)
print(re_content)

结果:(我把内容粘贴记事本里比对)
在这里插入图片描述

可以看到一个是str(字符串),一个是bytes(字节字符串)。
两者区别在于,content中间存的是字节码,会发现content前面存在b’这样的标志,这是字节字符串的标志
而text中存的是Beautifulsoup根据猜测的编码方式将content内容编码成字符串。

运用:

.text是现成的字符串,.content需要编码,但是.text不是所有时候显示都正常,这时需要用.content进行手动编码。

上面就提到了字节字符串,TA是什么?跟字符串的区别?

来看例子。

b'Blackspace'  # 字节字符串
'Blackspace'  # 字符串
区别:

字符串是字符序列,它是一种抽象的概念,不能直接存储在硬盘;字节字符串是字节序列,它可以直接存储在硬盘。它们之间的映射被称为编码/解码。在Python中,程序中的文本都用字符串表示。

运用:

写入文件时,需要把utf-8字符串编码成字节序列;读取文件时,需要把字节序列解码成utf-8字符串;
(看到这里就应该懂了吧,request的content对象是字节字符串,想要用的话需要用decode解码为字符串供自己使用)

举例:
>>> 'Blackspace'.encode('utf-8') # 编码
b'Blackspace'
>>> b'Blackspace'.decode('utf-8') # 解码
'Blackspace'
Ref:

https://stackoverflow.com/questions/6224052/what-is-the-difference-between-a-string-and-a-byte-string/6224384#6224384

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值