python字符编码转换说明及深浅copy介绍
编码说明:
常用编码介绍:
ascii 数字,字母 特殊字符。
字节:8位表示一个字节。
字符:是你看到的内容的最小组成单位。
abc : a 一个字符。
中国:中 一个字符。
a : 0000 1011
unicode: 万国码
起初: a : 0000 1011 0000 1011
中: 0000 1011 0000 1111
升级: a : 0000 1011 0000 1011 0000 1011 0000 1011
中: 0000 1011 0000 1111 0000 1011 0000 1011
utf-8:最少用8位表示一个字符。
a: 0000 1011
欧洲: 0000 1011 0000 1011
亚洲中:0000 1011 0000 1011 0000 1011
gbk:国标
a: 0000 1011
中:0000 1011 0000 1011 两个字节。
1,不同编码之间的二进制是不能互相识别的。
2,对于文件的存储,及传输 不能是unicode的编码。
python3x
int
bool
bytes:内部编码方式:(非unicode,utf-8,gbk.gb2312...)
str : 内部编码方式unicode
list
dict
tuple
bytes:内部编码方式:(非unicode,utf-8,gbk.gb2312...)
str : 内部编码方式unicode
字母:
str:表现形式:s1 = 'alex'
内部编码:unicode
bytes:表现形式:s2 = b'alex'
内部编码:非unicode
中文:
str:表现形式:s1 = '中国'
内部编码:unicode
bytes:
表现形式:b1 = b'\xe4\xb8\xad\xe5\x9b\xbd'
内部编码:非unicod
说明:
不同编码之间的二进制是不能互相识别的。
对于文件的存储,及传输 不能是unicode的编码
在python3中默认字符串编码方式是unicode,所以字符串不能直接发送和写入文件,所以需要转化。
Bytes默认字符编码是可变得但不是unicode编码方式,但bytes与str的所有操作方式都是一样的。
所以str想直接存储或者传输,需要将str转化成bytes再存储。
字符间转换方式:
存在str和bytes原因,是因为两者英文显示都是一样可以使用,但在表示中文的时候bytes可读性很差。
所以向str转化成bytes类型使用encode(‘字符编码’)
str转byts方法:——encode(‘字符编码’)
bytes转回str类型(解码):——decode(‘默认可以不写’)
bytes中文转化为其他编码方式是先转化为str后再转化为其他字符:
str可以转化为其他编码格式,存储时候使用bytes存储,所以其他格式的字符编码想转化为其他字符,就需要先dicode转化为str然后再通过enco的将str转化为其他。
举例:
s1 = 'alex'
# str ---> bytes encode 编码
b1 = s1.encode('utf-8')
print(b1)
#bytes---> str decode 解码
s2 = b1.decode('utf-8')
print(s2)
s4 = '中国'
b4 = s4.encode('utf-8') # utf-8 bytes
print(b4) ###b'\xe4\xb8\xad\xe5\x9b\xbd'
b6 = b4.decode('utf-8').encode('gbk')
print(b6) ###b'\xd6\xd0\xb9\xfa'
深 浅 cop说明
.Copy()
对赋值运算来说,就是公用一个内存地址,两个值都是公用一个内存地址,一个变另一个也跟着变。
.copy()复制的内容,浅copy是第一层级是相对独立,从第二层级后公用一个内存地址。
对于深copy需要引用copy模块,inmport copy不论嵌套多少层都是使用独立的内存地址,即别人变我不变。
浅copy:
对于层级比较多的列表或字典的时候,第一层(最外层)是相对独立的内存地址,从第二层开始,就开始共公用一个内存地址
深copy :
Import copy ——引用一个copy模块
深copy是表示不论你列表中嵌套了多少层,内存地址都是独立的。互补影响。
举例:
#赋值运算
# s1 = [1, 2, 3] ####赋值运算公用一个地址
# s2 = s1 # 共用一个
# s1.append(666)
# print(s1, s2)
#浅copy
# s1 = [1, 2, 3] ####浅copy是第一层级是相对独立
# s2 = s1.copy()
# s1.append(666)
# print(s1, s2)
# s1 = [1, 2, 3,[11,22]] ### 浅copy 第一层各自独立,从第二层开始,共用一个内存地址。
# s2 = s1.copy()
# s1[-1].append(666)
# # print(s1, s2)
# print(id(s1), id(s2))
# print(id(s1[-1]), id(s2[-1]))
# 深copy
import copy ###引用copy模块
# s1 = [1, 2, 3,[11,22]]
# s2 = copy.deepcopy(s1)
# s1.append(666)
# print(s1, s2)
# s1 = [1, 2, 3,[11,22]] ### 深copy 无论多少层,都是互相独立的。
# s2 = copy.deepcopy(s1)
# s1[-1].append(666)
# print(s1, s2)
python字符编码转换说明及深浅copy介绍的更多相关文章
- Python—字符编码转换、函数基本操作
字符编码转换 函数 #声明文件编码,格式如下: #-*- coding:utf-8 -*- 注意此处只是声明了文件编码格式,python的默认编码还是unicode 字符编码转换: import sy ...
- day4学python 字符编码转换+元组概念
字符编码转换+元组概念 字符编码转换 #coding:gbk //此处必声明 文件编码(看右下角编码格式) #用来得到python默认编码 import sys print(sys.getdefaul ...
- python 字符编码 转换
#!/bin/env python#-*- encoding=utf8 -*-# 文件头指定utf8编码还是乱码时,使用下面方式指定# fix encoding problem import sys ...
- Python字符编码转换
编码回顾 在备编码相关的课件时,在知乎上看到一段关于Python编码的回答这哥们的这段话说的太对了,搞Python不把编码彻底搞明白,总有一天它会猝不及防坑你一把.不过感觉这哥们的答案并没把编码问题写 ...
- python字符编码(二)
一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...
- 深入理解Python字符编码--转
http://blog.51cto.com/9478652/2057896 不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError ...
- 深入理解Python字符编码
不论你是有着多年经验的 Python 老司机还是刚入门 Python 不久,你一定遇到过UnicodeEncodeError.UnicodeDecodeError 错误,每当遇到错误我们就拿着 enc ...
- Learning-Python【8】:Python字符编码
1.内存和硬盘都是用来存储的 内存:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编写的 ...
- 关于Python字符编码encode和decode
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...
随机推荐
- OSGEarth加载 geoserver 发布 TMS
geoserver配好数据并用自带的gwc切片好后, 访问 http://localhost:9999/geoserver/gwc/service/tms/1.0.0/ 在OsgEarth的earth ...
- 《一马当先 O2O创业真人秀》阿里云创客+项目提交报名中
传统行业与互联网的相互融合,线上与线下的互通,正在掀起一股“互联网+”新风潮和创业热潮.支付宝钱包.快的打车.淘点点……这些耳熟能详的应用早已成为人们生活的一部分.而越来越多的“互联网+”创新项目,将 ...
- Android recyclerview删除item刷新列表
删除item坑 mModels.remove(i); notifyItemRemoved(i); //必须调用这行代码 notifyItemRangeChanged(i, mModels.size() ...
- 微信小程序开发踩坑记
前言 微信小程序自去年公测以来,我司也申请了一个帐号开发,春节前后开始开发,现在终于告一个段落了.谨以此文记录下踩过的坑. 坑1:scroll-view与onPullDownRefresh冲突 由于有 ...
- ps cs6破解补丁使用方法
第一步.首先下载ps cs6破解补丁 ,再下载官方ps cs6中文版,安装之后运行一次.第二步.先备份你想要激活的软件的“amtlib”文件,比如PS CS6 64bit其目录在“C:\Program ...
- 028class_part2
1.成员修饰符 2.特殊成员 3.metaclass,类的祖宗 ###成员修饰符###公有和私有 #__author:_nbloser #date:2018/1/19 #私有类.对象成员 ...
- 「C语言」在Windows平台搭建C语言开发环境的多种方式
新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于 Windows 平台搭建C语言集成开发环境 ...
- ADF系列-1.EO的各个属性初探
ADF中的EO可以看做关系型数据库中表的java展现形式. 1.Type 此处的Type是java的类型,而需要映射的是数据库的类型,两者之间存在一些差异,各个映射关系如下: 数据库列类型 BC 属性 ...
- 使用ByPropertyName进行管道传输
管道参数绑定的两种方式: 可通过 help command -full查看 不同:简单讲ByPropertyName可以使B的多个参数被同时使用 使用ByPropertyName进行管道传输: 建立一 ...
- 系统剪切板的使用UIPasteboard
最近发现支付宝和淘宝使用吱口令和淘口令的功能,就一直想怎么实现的,觉得应该是使用了系统的剪切板,然后查阅了资料做下笔记! 系统的剪切板主要是使用了UIPasteboard这个类. UIPasteboa ...