可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符

1.关于字符串编码

ASCII编码 占用一个字节 二进制11111111=十进制255 所以可以编码所有的字母和数字,比如大写字母A的编码是65,小写字母z的编码是122。但是由于各国语言自成一脉,难免冲突,一起出现会出现乱码。

Unicode编码应运而生,编译所有语言。通常占用两个字节,生僻汉字需4需4个字节,字母数字编码补0,缺点是储存空间变大,若都是英文字母,不划算。

UTF-8 可变长度编码集二者之长,把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节。

计算机内存统一使用Unicode编码,存储和传输则使用UTF-8编码。

Python的字符串类型是str,内存中以Unicode存储,如果要在网络上传输,或保存在磁盘上,就要把str变为以字节为单位的bytes(编码)。

而从网络或磁盘上读取时,就要把bytes字节转换为str(解码)。对应的方法分别是encode()和decode()

解码的时候,如果包含无法解码的字节就会报错:

 print(b'\xe4\xb8\xad'.decode('utf-8'))
>>> 中
print(b'\xe4\xb8\xad\xff'.decode('utf-8'))
>>>

  Traceback (most recent call last):
  ...
  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

如果只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:

 print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'))
>>> 中

当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

 #!/usr/bin/env python3
# -*- coding: utf- -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

PS. 字符串的占位符‘%s’,会把任何数据类型转换为字符串。也可以用具体的数据类型的占位符如%d表示整数,%f表示浮点数,%x表示十六进制整数 而%需要%转义,通常‘%%’表示‘%’

2.Python的复杂数据类型之 list,tuple,dict,set

python小知识点随笔的更多相关文章

  1. python小知识点总结

    小知识点总结 1.python2和python3的区别   python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...

  2. Python小知识点(3)--装饰器

    (1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func): def done(*args,**kwargs): star ...

  3. python小知识点

    问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法#    s=0#    for x in a:#        ...

  4. Python小知识点(5)--面向对象部分

    面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.--------------------我的手机< ...

  5. Python 小知识点(7)--类的创建方式

    1. 创建类的第1方式(常用) class Foo(object): def func(self): print("Hello Foo") 2.创建类的第2方式 def func( ...

  6. Python小知识点(4)--模块相关

    1.模块: 定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组 ...

  7. Python小知识点(2)

    1.简述Python的运行过程 在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件. 我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器 ...

  8. Python 小知识点(1)

    1.Python命名规则------>下划线连接    girl_of_wfb="lgl" 2.常量-----名称全大写->WFB="WFaceBoss&qu ...

  9. Python小知识点+保留字

    注意 !/usr/bin/python # -- coding: UTF-8 -- #中文编码 Python空行:函数之间或类的方法之间用空行分隔,表示一段新的代码的开始 Python注释:单行注释采 ...

随机推荐

  1. IOS中多线程的总结

    首先要知道线程和进程的区别.一个系统上运行的每一个应用程序都是一个线程.而进程中要执行的任务都是在线程上来实现的,所以说线程是进程的最小执行单元. 进程最少要有一个线程.多线程,顾名思义就是多条线程. ...

  2. C_输入一个整数N,输出从0~N(算法思考)

    1.for循环实现 #include <stdio.h> #include <time.h> clock_t start, stop; double duration; voi ...

  3. 2018-2019-1 20189210 《LInux内核原理与分析》第九周作业

    进程的切换和系统的一般执行过程 (1)进程调度的时机 1.schedule是一个内核函数,不是一个系统调用,进程的调度只发生在内核中,进程调度函数schedule()只能在内核中被调用,用户进程无法调 ...

  4. [LeetCode] Implement Rand10() Using Rand7() 使用Rand7()来实现Rand10()

    Given a function rand7 which generates a uniform random integer in the range 1 to 7, write a functio ...

  5. 在线协作开发工具apizza使用方法(https://apizza.net/projects)

    1. 2. 3. 4. 5. 谷歌浏览器点击选择“更多工具”->“扩展程序”  6. 将刚才解压好的文件夹拖到这个位置即可

  6. CISCO MDS – Useful ‘Show’ Commands

    CISCO MDS – Useful ‘Show’ Commands CONFIG:show startup-configshow running-configshow running-config ...

  7. Mongodb 副本集+分片

    mongodb的分片功能是建立在副本集之上的,所以首先我们尝试着配置副本集. docker启动3个已经安装好mongo的镜像 # docker run -idt --name mongodb_01 m ...

  8. js 中数组的遍历

    var x = ['a','b','c'] x.forEach(function(val,k){ console.log(val + '--' +k); }) a--0 b-- 1 c-- 2 var ...

  9. Spring Boot2.1.3全局跨域

    /** * 配置跨域访问 * * @author Terwer */ @Bean public WebMvcConfigurer corsConfigurer() { return new WebMv ...

  10. std unorder_map insert 和 emplace的区别

    std::unordered_map<int, int > map; map.insert(std::make_pair(, )); map.insert(std::make_pair(, ...