前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python3学习(1)

python3学习(1)

作者头像
py3study
发布2020-01-03 17:51:30
5490
发布2020-01-03 17:51:30
举报
文章被收录于专栏:python3python3

判断编码格式

import chardet chardet.detect("abc迭代".encode("gbk"))#需要加encode {'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}

python2 和python3文件处理字符编码区别 py2: 1 文件要存为utf-8 2 文件第一行声明为:#encoding=utf-8 #coding=utf-8 #coding:utf-8 #_coding:UTF-8_ 3 所有的中文前面加u,表示unicode

py3: 1 文件要存为utf-8 2 声明可以不加,加上也没问题 3 中文前面不用加u,加了也没事。

1 保存为ANSI 2 文件头声明为#encoding=gbk 3 中文前面不加u,加了应该也没事

py3示例:

#coding=gbk s = "中国" print(s) #按照gbk转换到unicode 文件保存的是ANSI

s = "中国" print(s) 这个在文件里面,默认是用utf8的,但是保存的又是ANSI

E:\python>py -3 a.py File "a.py", line 1 SyntaxError: Non-UTF-8 code starting with '\xd6' in file a.py on line 1, but no encoding declared; s ee http://python.org/dev/peps/pep-0263/ for details

#coding=utf-8 s = "中国" print(s) 文件保存为utf-8,#coding=utf-8这个可写可不写,默认是按照utf是转换到unicode的

示例: py2:存为utf-8,文件第一行也声明为utf-8 str1="我们" 类型:str #str1.decode() 默认是:ascii解码 str1.decode("utf-8") str1.decode("utf-8")==u"我们" str1.decode("utf-8").encode("utf-8")==str1

py2:存为ansi,文件第一行也声明为gbk str1="我们" 类型:str #str1.decode() 默认是:ascii str1.decode("gbk")==u"我们" str1.decode("gbk").encode("gbk")== str1

python2 和python3 decode 、encode区别 str2=u"我们"  类型:unicode

py2:str类型等价于py3的bytes类型 py2:str类型例子: s ="中国" py2的Unicode类型例子:s =u"中国"

p3:str类型等价于py2的unicode类型 py3 的str类型:s = "中国" py3 的bytes类型: s= "中国".encode("utf-8")

encode: 不管是2还是3,只能对unicode对象来用 在py2:将unicode类型的对象,转换为str类型 在py3:将 str类型的对象,转换为了bytes类型

decode: 不管是2还是3,只能对非unicode对象使用 在py2:将str类型的对象,转换为unicode类型 在py3:将bytes类型的对象,转换为了unicode类型

Py3中如:

s = "中户任命施蒂利克积分洛杉矶的方式" print(s.encode("gbk").decode("gbk")) 中户任命施蒂利克积分洛杉矶的方式

分析: 其中s本身str类型,即是unicode编码在内存中保存,分两步: 1、s.encode("gbk")是把unicode编码成gbk,在内存中是bytes类型保存; 2、s.encode("gbk").decode("gbk") 是把上一步得到的结果解码成gbk编码,在内存中用unicod保存,才可以在终端中展示;

只有在unicode下才能将utf-8与gbk互转

py3时: a="中国" 和a=u"中国" 是一个意思,都表示str类型unicode存储类型 c=b"good" 表示str类型bytes存储类型

py2时: a="中国" 和a=b"中国" 是一个意思,表示str类型bytes存储类型 a=u"中国" 表示str类型unicode存储类型

unicode是在内存中使用 bytes在文件存储和网络数据传输中使用。

练习题6: py2 :声明str类型变量和unicode变量 将unicode变量变为2个str变量(gbk,utf-8各一次) 将utf-8编码的str类型,转换为gbk #coding=utf-8 str1 = "水电费了会计师福建省来访接待室浪费空间" str2 = u"中国了空间乱收费的健康" print str2.encode("utf-8")#这个编码成utf-8会展示乱码,因为终端是gbk编码 print str2.encode("gbk")

print str1.decode("utf-8").encode("gbk")

交互模式:

s = "迭代" s.decode("gbk")#因为默认是gbk展示的 u'\u8fed\u4ee3' print s.decode("gbk") 迭代

查看python使用的默认编码

import sys sys.getdefaultencoding <built-in function getdefaultencoding> sys.getdefaultencoding() 'utf-8' "胜多负少计费".encode().decode()#这里默认都是使用utf-8进行编码和解码的 '胜多负少计费' "胜多负少计费".encode("utf-8").decode("utf-8") '胜多负少计费'

常量: const.py class _const: class ConstError(TypeError):pass def setattr(self, name, value):#赋值时候该函数会被自动调用 if name in self.dict: raise self.ConstError self.dict[name]=value

import sys #name代表当前模块,把const类注册到sys.modules这个全局字典中。 sys.modules[name] = _const() print(name)

print(_const())

b.py import const const.magic = 23 print(const.magic) const.magic = 33

使用sys.modules[name]可以获取一个模块对象,并可以通过该对象获取模块的属性,这儿使用了sys.modules向系统模块字典中注入了一个_const对象从而实现了在执行import const时实际获取了一个_const实例的功能;

其他模块执行import const 导入const模块时候sys.modules[name] = _const()会被执行(所有顶格写的代码都会被执行)系统模块字典中就注入了一个_const类的实例对象;而其他模块就可以使用该队形的方法和属性了;

type(10) <class 'int'> type(10.2) <class 'float'> type(10+4j) <class 'complex'> isinstance(2,(int,float,complex)) True

字符串拼方式:

"a" + "b" + "c"#效率低 'abc' "".join(["a","b","c"]) 'abc' "%s" %50 '50'

True False可以作为常量相加 True 1 False 0

True +1 2 False + 2 2

True 1 False 0

bool()函数 判断True 或者 False

bool({}) False

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-09-28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 只有在unicode下才能将utf-8与gbk互转
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档