Python2和Python3的字符串编码和类型
一、字符串编码和类型
任何编码格式的字符串,都可以和Unicode互相转换。
gbk -> utf8
# 将字符串按指定格式进行解码,返回Unicode字符串
unicode_str = gbk_str.decode("gbk")
# Unicode字符串按指定格式进行编码,返回对应编码字符串
utf8_str = unicode_str.encode("utf-8")
爬虫获取网页字符串的编码格式,取决于网页的charset=gbk
Python2: 编码和类型
str 类型:非Unicode编码字符串
unicode 类型:Unicode编码字符串
Python3: 编码和类型
str 类型:Unicode编码字符串
bytes 类型:非Unicode编码字符串和二进制数据,前面有个'b'
# 将字符串按指定格式进行解码,返回Unicode字符串
unicode_str = gbk_str.decode("gbk")
# Unicode字符串按指定格式进行编码,返回对应编码字符串
utf8_str = unicode_str.encode("utf-8")
二、解释器编码(Linux) :默认编码转换,用于文件写入
>>> import sys
>>> sys.getdefaultencoding()
Python2 :ascii 只能帮忙转换字母、数字
Python3 :utf-8 默认转为utf-8
字符串 utf-8 存为 utf-8文件 (OK)
字符串 unicode,转为utf-8, 存为 utf-8文件 (OK)
字符串 unicode,如果不转码,解释器会尝试转为utf-8,存为utf-8文件 (OK)
当字符串是包含中文的Unicode时,Python2不能直接写入文件,会报错
如果遇到字符串和需要保存的文件不一致:
1. 自己手动转为匹配的编码格式
2. 让解释器帮忙转换,Python2有可能做导致 UnicodeEncodeError
在程序员没有转换编码的前提下:
Python3的解释器:可以将Unicode 转为utf-8 写入Linux文件下(解释器编码UTF-8)
Python2的解释器:不能将 Unicode 写入到Linux文件下(解释器编码ASCII)
Python2下处理编码的万能钥匙:
将Python2的解释器编码ascii 改为 utf-8 (解释器环境等于Python3)
>>> import sys
>>> reload(sys)
>>> sys.setdefaultencoding("utf-8")
三、终端编码(Linux)
Python2 : utf-8
Python3 : Unicode
四、保存的文件编码
只和操作系统有关,Linux是utf-8 Windows GBK
Python3:
with open("xxx.txt", "w", encoding="utf-8") as f:
f.write(xxxx)
Python2 ;没有encoding参数
>>> with open("xxx.txt", "w") as f:
... f.write("你好".decode("utf-8"))
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
UnicodeEncodeError: 'ascii' codec cant encode characters in position 0-1: ordinal not in range(128)
>>> with codecs.open("xxx.txt", "w", encoding="utf-8") as f:
... f.write("你好".decode("utf-8"))
...
五、代码文件的编码格式
Python2: ascii #coding:utf-8
Python3: utf-8
Google :PageRank(根据网页流量排名)
Baidu :超链分析(Robin Li),竞价排名(给钱多排名靠前)
不要看一下午视频,只看不清楚的地方(11:55)
“我亦无他,唯手熟尔。”
照着抄代码 - 默写代码 - 改写代码 - 自己写出自己的代码
Python自带模块:
/usr/lib/python2.7
Python第三方模块(pip install xxx)
/usr/local/lib/python2.7/site-packages/
Python2和Python3的字符串编码和类型的更多相关文章
- 一篇文章助你理解Python3中字符串编码问题
前几天给大家介绍了unicode编码和utf-8编码的理论知识,以及Python2中字符串编码问题,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系和一篇文章助你理解 ...
- Python2与python3中字符串的区别
Python2 在python中包含两种字符串类型:str和unicode,str并不是完全意义上的字符串,其实是由unicode经过编码(encode)后的字节组成的字节字符串,而unicode则是 ...
- python2和python3中的编码问题
开始拾起python,准备使用python3, 造轮子的过程中遇到了编码的问题,又看了一下python3和python2相比变化的部分. 首先说个概念: unicode:在本文中表示用4byte表示的 ...
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等)
python3 解释器默认编码为Unicode,由str类型进行表示.二进制数据使用byte类型表示. 字符串通过编码转换成字节串,字节码通过解码成为字符串. encode:str-->byte ...
- python2.7.x的字符串编码到底什么鬼?(中文和英文的处理)
一直以来我其实一直对python的编码弄得非常晕,能正常编码,也能处理一些情况.但是始终不明白有些问题究竟为何出,原因是什么,为什么要这样用. 今天晚上正好好好研究了一番解答了自己心中的困惑. Q:p ...
- Python2和Python3中的字符串编码问题解决
Python2和Python3在字符串编码上是有明显的区别. 在Python2中,字符串无法完全地支持国际字符集和Unicode编码.为了解决这种限制,Python2对Unicode数据使用了单独的字 ...
- Python的字符串编码
本文用实验详细地演示了Python2和Python3在字符串编码上的区别. 在Python2中,字符串字面量对应于8位的字符或面向字节编码的字节字面量.这些字符串的一个重要限制是它们无法完全地支持国际 ...
- Python2与Python3字符编码的区别
目录 字符编码应用之Python(掌握) 执行Python程序的三个阶段 Python2与Python3字符串类型的区别(了解) Python2 str类型 Unicode类型 Python3 字符编 ...
- 一篇文章助你理解Python2中字符串编码问题
前几天给大家介绍了unicode编码和utf-8编码的理论知识,没来得及上车的小伙伴们可以戳这篇文章:浅谈unicode编码和utf-8编码的关系.下面在Python2环境中进行代码演示,分别Wind ...
随机推荐
- vue quill使用&quill 自定义图片上传&自定义mp4 更换标签
pluins 创建quill 目录 创建文件video.js import { Quill } from 'vue-quill-editor' // 源码中是import直接倒入,这里要用Quill. ...
- Educational Codeforces Round 75 (Rated for Div. 2) D. Salary Changing
链接: https://codeforces.com/contest/1251/problem/D 题意: You are the head of a large enterprise. n peop ...
- docker(一) -- docker安装、容器加速、下载、备份
一.docker的 容器是从镜像中创建出来的虚拟实例 容器用来运行实例,是读写层 镜像用来安装程序,是只读层 1. docker的安装和基本操作 安装命令 yum -y update yum inst ...
- 003_创建simulink文件
001_创建simulink文件 1. 打开MATLAB,打开simulink 2. 打开空白模块 3. 保存,并打开模块的选择 4. 在模块里面选择后拖出模块后连线 或在搜索名称后拖出来 或在空白的 ...
- spark的广播变量
直接上代码:包含了,map,filter,persist,mapPartitions等函数 String master = "spark://192.168.2.279:7077" ...
- Laravel 项目架构 弹性、可维护性
公司项目可能需要对架构进行重建,老大给了我一个视频让我学习里面的思想,看完后觉得收获很大,主讲人对laravel项目各个层次有很清晰的理解,力求做到职责单一分明,提高可维护性.下面是我看完视频对其内容 ...
- 四十.创建Redis集群 管理集群
环境准备 准备 6台(51-56) redis服务器 以默认配置运行redis服务即可 一.创建Redis集群 1.启用集群功能( 51-56 都要配置) ]# netstat -antupl ...
- Mxnet框架搭建
Mxnet框架搭建 小书匠 kindle Mxnet是亚马逊开发的深度学习框架,和谷歌Tensorflow是同类型的框架. 1.安装Mxnet 这里只展示在线安装,源码编译安装等不演示:GPU安装与 ...
- SSD检测几个小细节
目录 一. 抛砖引玉的Faster-RCNN 1.1 候选框的作用 1.2 下采样问题 二. SSD细节理解 2.1 六个LOSS 2.2 Anchor生成细节 2.3 Encode&& ...
- 基于Shiro的登录功能 设计思路
认证流程 Shiro的认证流程可以看作是个“有窗户黑盒”, 整个流程都有框架控制,对外的入口只有subject.login(token);,这代表“黑盒” 流程中的每一个组件,都可以使用Spring ...