python en(de)code
代码写挺长的,也是边学边写,但一直搞不清楚python的encode(编码)和decode(解码)。以下是我的探究之路。
一、当然先看官方文档
里面提到encode函数‘Return an encoded version of the string as a bytes object.’就是将字符串进行编码,返回得到bytes类型对象,
而decode函数正好相反,是将bytes解码为字符串类型。
二、实际操作一下
直接以爬虫代码为例:
1 |
response=requests.get(BASE_DOMAIN, headers=HEADERS) |
run一下之后会发现很多乱码
查了一下发现问题处在.text上,.text是返回网页的相应数据,并按照机器认为的最大可能去解码比如utf-8。而观察本站发现’charset=gb2312’所以出现了乱码。于是,
我用encoding规定用gb2312解码:
1 |
response=requests.get(BASE_DOMAIN, headers=HEADERS) response.encoding="gb2312" |
果然解决了乱码问题,但这和 大专栏 python en(de)codeencode,decode没啥关系。。。
接下来就有关系了。
我换了一种方式:
1 |
response=requests.get(BASE_DOMAIN, headers=HEADERS) |
发现爬到的是bytes类型,意识到.content返回的数据是不进行解码的,又由于是由bytes到字符串的解码,所以使用decode()
1 |
response=requests.get(BASE_DOMAIN, headers=HEADERS) |
一运行,woc!报错了
说是gb2312不能解码,这不矛盾吗…
于是赶紧上网查了一下发现gbk的解码范围包含了gb2312,于是尝试改为gbk,问题解决,成功解码~
这只是用了decode(),那再作死一下把解码的再编码回来,走你:
1 |
response=requests.get(BASE_DOMAIN, headers=HEADERS) |
成功编码~
经过了这次的探索尝试,搞明白了Python编码和解码,最近在学习汇编,相信之后从硬件的角度会对编码解码这方面有更深的理解!
python en(de)code的更多相关文章
- Converting Python Virtual Machine Code to C
Converting Python Virtual Machine Code to C
- Python on VS Code
install python extension Press F1, and input "ext install python". Then the icon at the le ...
- python 调用 C++ code
本文以实例code讲解python 调用 C++的方法. 1. 如果没有参数传递从python传递至C++,python调用C++的最简单方法是将函数声明为C可用函数,然后作为C code被pytho ...
- Pycharm创建Django项目显示python non-zero exit code(1)错误
好久时间没有做Django的项目了,今天创建项目竟然报Non-zero exit code(1)错误 查明原因是因为pip不是最新版本,需要执行以下命令:python -m pip install - ...
- python单线程爬虫code
广度优先算法: # -*- coding: utf-8 -*- import urllib import urllib.request from bs4 import BeautifulSoup im ...
- python shopping incomplete code
#shopping code#shopping.py#导入登录模块import login# shop car beginningsalary = input("请输入工资:\t" ...
- facebook视频上传python 返回错误code:100,'type':OAuthException
首先重新获取访问口令token: https://developers.facebook.com/tools/debug/accesstoken/?q=EAAYDuzyd3eYBAK9lZCErZBl ...
- python参数Sample Code
import time import datetime import getopt import sys try: opts, args = getopt.getopt(sys.argv[1:], & ...
- Python with VS Code
1. 基本的代码结构为: 2.
随机推荐
- 三分钟入坑指北 🔜 Docsify + Serverless Framework 快速创建个人博客系统
之前由于学摄影的关系,为了提高自己的审美,顺便锻炼下自己的英文能力,翻译了不少国外艺术类的 文章.最近一直想搭一个个人博客来存放这些内容,又懒得折腾建站,遂一直搁置. 直到偶然发现了 docsify ...
- blueimp,预览遮罩范围控制
blueimg gallery github地址:https://github.com/blueimp/Gallery/blob/master/README.md 使用前提,引用css和js < ...
- CSS padidng-top\margin-top\fixed 的特殊性
参考: 使用css时,可能会出错的两个地方 1.padidng-top\margin-top padidng-top\margin-top可以设置'px' 或者是'%',设置'px'略过,说一下设置‘ ...
- UVA 12663 第九届省赛 高桥与低桥 线段树
题意很简单,n个桥的高度是事先给出来的,然后有m次涨水与落水的高度,问有多少座桥在这m次涨落之后 被淹超过了k次,如果某桥本身被水淹了,此时再涨水,就不能算多淹一次 看下数据10的五次方,10的五次方 ...
- 干货|CVE-2019-11043: PHP-FPM在Nginx特定配置下任意代码执行漏洞分析
近期,国外安全研究员Andrew Danau,在参加夺旗赛(CTF: Capture the Flag)期间,偶然发现php-fpm组件处理特定请求时存在缺陷:在特定Nginx配置下,特定构造的请求会 ...
- Java学习十六
学习内容: 1.做毕设 2.Java异常类 3.Java包装类 1.System.exit(1):终止程序运行,终止final执行方法 2.throws抛出异常类型,throw抛出异常对象 用法:th ...
- uniapp 初始化项目
const baseUrl = 'http://10.92.1.17:6601/videoapi/'; //const baseUrl = '/videoapi/'; //对于 GET 方法,会将数据 ...
- Pytorch学习--编程实战:猫和狗二分类
Pytorch学习系列(一)至(四)均摘自<深度学习框架PyTorch入门与实践>陈云 目录: 1.程序的主要功能 2.文件组织架构 3. 关于`__init__.py` 4.数据处理 5 ...
- 和我一起从0学算法(C语言版)(二)
第一章 排序 第三节 快速排序 快速排序是最常用的排序方法.快排运用的递归方法很有意思.掌握了这种排序方法可以在将来学习递归时更快入门.只是快排的思路与之前的排序方法相比较为复杂,再加担心上我的表达能 ...
- strpos用法
语法 strpos(string,find,start) 参数 描述 string 必需.规定要搜索的字符串. find 必需.规定要查找的字符串. start 可选.规定在何处开始搜索. 技术细 ...