Python学习日记(五) 编码基础

初始编码

ASCII最开始为7位,一共128字符。最后确定8位,一共256个字符,最左边的为拓展位,为以后的开发做准备。

ASCII码的最左边的一位为0。

基本换算:8位(bit) = 1字节(byte)

1024byte = 1 KB

1024KB = 1MB

1024MB = 1GB

1024GB = 1TB

电脑的传输还有存储实际上都是以二进制的形式进行的。

Unicode:美国最初是使用ASCII编码,后来为了解决全球化的文字问题,创建了万国码(Unicode)

开端:

  一个中文最初给两个字节(16位)来表示,后来发现中文就将近十万字,不够,所以之后Unicode用4个字节(32位)来表示一个中文。

  一个英文给四个字节(32位)来表示。

升级后:

UTF-8:

  一个中文用3个字节(24位)表示

  一个英文用1个字节(8位)表示

  一个欧洲文字用2个字节(16位)表示

国内使用编码:

GBK:

  一个中文用2个字节(16位)表示

  一个英文用1个字节(8位)表示  

(1)各个编码之间的二进制是不能互相是别的,会产生乱码

(2)Unicode 的字符要用4个字节(32位)来表示,占用了太多内存。因此文件的储存、传输不能是Unicode类型,只能是UTF-8、UTF-16、GBK、GB2312、ASCII等类型

UTF-8和GBK的转变要借助Unicode

(3)在Python3中str在内存中是用Unicode存储的

       而bytes类型是以(UTF-8、GB2312等编码)

对于英文:

str的表现形式:

s = ‘abc‘

str的编码方式:

以Unicode的01010101形式

bytes的表现形式:

b_s = b‘abc‘

bytes的编码方式:

以UTF-8、GBK等的01010101形式

对于中文:

str的表现形式:

s = ‘中国‘

str的编码方式:

以Unicode的01010101形式

bytes的表现形式:

以UTF-8的b‘\xe4\xb8\xad\xe5\x9b\xbd‘形式

bytes的编码方式:

以UTF-8、GBK等的01010101形式

编码(将str->bytes):

中文:

s1= ‘中国‘
s2 = s1.encode(‘utf-8‘)
print(s2)   #b‘\xe4\xb8\xad\xe5\x9b\xbd‘
s2 = s1.encode(‘gbk‘)
print(s2)   #b‘\xd6\xd0\xb9\xfa‘

英文:

s1 = ‘abc‘
s2 = s1.encode(‘utf-8‘)
print(s2)   #b‘abc‘
s2 = s1.encode(‘gbk‘)
print(s2)   #b‘abc‘

解码(将bytes->str):

b = b‘\xe4\xb8\xad\xe5\x9b\xbd‘
s = b.decode(‘utf-8‘)
print(s)    #中国
b = b‘abc‘
s = b.decode(‘utf-8‘)
print(s)    #abc

其他:

1.Python2和Python3的区别:

      Python2                      Python3

<1>.print 可以加括号,也可以不加括号                

      print(‘abc‘)                  print(‘abc‘)

      print ‘abc‘

<2>.xrange()生成器                     range()

range()

<3>.raw_input()                         input()

2.

= 是赋值

is 是比较内存地址

== 比较值是否相等

id(内容)

3.小数据池

在Python中数字和字符串存在着小数据池,它的作用是在一个数据范围内节省内存空间,共用一个内存地址

list、dict、set、tuple没有小数据池这一概念

int:

只要数值在范围(-5 - 256),它们都共用一个相同的内存地址

例1:

  

例2:

例3:

str:

<1>.当字符串长度为0或1时默认使用小数据池,当长度大于1时且没有含有特殊字符(包括加减乘除)时也将使用小数据池

<2>.一个字符串长度小于等于20用的还是同一个内存地址,长度大于20以后用的是2个内存地址

当乘数为1时:

仅含字符串、数字、下划线,默认使用小数据池:

含其他字符,长度<=1时,默认使用小数据池

含其他字符,长度>1时,默认使用小数据池

当乘数大于1时:

字符长度小于等于20将使用小数据池

  

原文地址:https://www.cnblogs.com/Fantac/p/11252862.html

时间: 2024-10-10 03:45:29

Python学习日记(五) 编码基础的相关文章

Python学习一:序列基础详解

作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7858473.html 邮箱:[email protected] 日期:2017-11-18 Python学习一:序列基础详解 一:序列介绍 Python中一些类型的变量,就像容器一样,收纳多个数据,序列就像一个有序的队伍,像整齐的万里长城,存储着各种各样的数据,他们按照一定的秩序排列在一起,很威武,很美观,所以说序列是有序的数据集合.序列包含的一

Day3: Python学习笔记之计算机基础——网络片

Day3: Python学习笔记之计算机基础--网络片 什么是互联网协议以及为何要有互联网协议? ?互联网协议本质上是为了方便连接两台计算机而指定的一系列统一的标准. osi五层模型 计算机之间要实现数据传输必须要经过以下五层协议: ? 模型 ,协议 ,硬件 ? 应用层, http协议.用户自定义协议 ? 传输层, TCP/UPD协议 ,四层交换机.四层路由器 ? 网络层, IP协议, 三层交换机.路由器 ? 数据链路层, 以太网.电信号分组, 网桥.以太网交换机.网卡 ? 物理层, 传递电信号

python学习第五天 - for...in...循环

for..in语句是另一个循环语句,它迭代一个对象的序列,例如经历序列中的第一项.在后面的章节,我们将会看到更多关于序列的细节.现在,你需要知道的是一个序列只是一个有序的项目的集合. 例如 (保存为 for.py): for i in range(1,5): print(i) else: print('for循环结束') >>> ================================ RESTART ================================ >&g

Python学习之路-Day1-Python基础

Python学习之路第一天 学习内容: 1.Python简介 2.安装 3.第一个Python程序 4.变量 5.字符编码 6.用户输入 7.表达式if..else语句 8.表达式for语句 9.break和continue 10.while循环 11.字符串格式化 1.python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承. 最新的TIOB

Python学习笔记day1【基础介绍】

Alex博客:http://www.cnblogs.com/alex3714/articles/5465198.html 一.本节主要内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc文件 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 二.具体内容 1.python介绍 python的创始人为吉多·范罗苏姆(Guid

Python学习笔记五:错误、调试和测试

1 # !/usr/bin/env python 2 # coding:utf-8 # 编码 3 4 'a test module' 5 6 __author__ = 'Sunflower' 7 8 9 # 异常错误类型 10 # AssertionError 断句错误 11 try: 12 my_list =['zhangsan'] 13 assert len(my_list) > 0 14 my_list.pop() 15 assert len(my_list) > 0 16 except

Python 学习日记第五篇 -- collections系列

一.计数器(counter) 计数器(counter)以字典的形式返回序列中各个字符出现的次数,值为key,次数为value #!/usr/bin/env python #-*- coding:utf-8 -*- #导入collections模块 import collections counter_test = collections.Counter("asfafjhadgkhjkgfjhgfjhaghdg") print(counter_test) #返回值 C:\Python27

python学习日记(基础数据类型02)-003

数字 int  :主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3 s = i.bit_length() print(s) 布尔值 bool  True/False while True: 等价于: while 1:   ###较简便 字符串 str 字符串的索引与切片 索引:索引既下标,字符串元素从第一个开始,初始索引为0.以此类推. s = 'sdfjskjdfl' print(s[0]) print(s[2]) 切片:通过索引截取字符串的一段,形成

Python学习日记(三十五) Mysql数据库篇 三

使用Navicate 创建一个连接去使用Mysql的数据库,连接名可以取任意字符但是要有意义 新增一个数据库 填写新数据库名,设置它的字符集和排序规则 新建一个表 增加表中的信息 点击保存再去输入表名完成创建,再添加数据: 使用外键将两表产生联系 再创建一个department表 添加数据: 创建外键,右键userinfo设计表创建外键: 写入SQL语句 点击查询->新建查询 转储SQL文件 将SQL文件进行备份 保存数据和结构 保存结构 使用终端进行转储 保存数据和结构(备份) 保存结构(备份