Python3中的保留字,Python3中的str类型没有decode方法

  Python3中的保留字,Python3中的str类型没有decode方法

  一、两种响应方式在使用python3的requests模块时,我发现有两种方式可以得到响应。

  一是r.text响应内容,二是二进制响应内容。r.content在《Python学习手册》,解释如下。

  Python 3。x有三种字符串对象类型——,一种用于文本数据,两种用于二进制数据:

  Str Unicode text (8位及更宽)bytes表示二进制数据bytearray,它是一种可变字节类型 。也就是说,r.text实际上是Unicode的响应内容,而r.content是binary的响应内容。我们来看看源码是怎么解释的。

  @属性

  定义文本(自身):

  “”以unicode表示的响应内容。

  如果Response.encoding为None,将使用

  “chardet”。

  响应内容的编码仅基于HTTP来确定

  头,严格遵循RFC 2616。如果你能利用

  非HTTP知识为了更好地猜测编码,您应该

  在访问此属性之前,请适当地设置“r.encoding”。

  一般来说,r.text方法返回unicode编码的响应内容。响应的编码取决于HTTP消息的报头。如果您有HTTP之外的知识来猜测编码,您应该在访问该属性之前设置适当的r.encoding。也就是说,你可以使用r.encoding来改变编码,这样当你访问r.text时,请求将使用r.encoding的新值。

  r编码

   utf-8

  让我们来看看r.content的源代码

  @属性

  定义内容(自身):

  响应的内容,以字节为单位。r.content以字节为单位返回响应内容。

  二。提出和解决问题当get请求与请求一起发送时,结果如下:

  导入请求

  url=xxx

  params=xxx

  cookie={ XXX : XXX }

  res=requests.request(get ,url,params=params,cookies=cookies)

  打印(研究文本)

  那么,问题来了。是什么造成了unicode编码的字符串用\u表示?请参考知乎的相关回答,如何展现其真面目?

  print(res.text.encode()。解码( unicode_escape ))

  这个unicode_escape是什么?存储unicode的内存编码值,并且在读取文件时反向转换回来。这里采用了Unicode-escape。

  当我们采用res.content时,也会遇到这个问题:

  导入请求

  url=xxx

  params=xxx

  cookie={ XXX : XXX }

  res=requests.request(get ,url,params=params,cookies=cookies)

  打印(内容)

  解决方法是

  print(RES . content . decode( unicode _ escape ))

  三。总结1。str.encode()将字符串转换为原始字节形式

  Bytes.decode()将原始字节转换为字符串形式。

  2.当遇到类似的编码问题时,首先检查响应内容文本是什么类型。如果类型(文本)是字节,那么

  Text.decode(unicode_escape )如果type(text)是str,那么

  text.encode(latin-1 )。解码(“unicode_escape”)

  参考https://www.zhihu.com/question/26921730

  转载请联系作者取得转载授权,否则将追究法律责任。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: