python基本使用时常见错误
python基本使用时常见错误
字符编码错误
如果要学习计算机编程语言,首先就要搞懂字符编码,否则在以后的学习过程中,将会是一场噩梦。在一开始使用的时候,我就遇到了很多的关于字符编码的问题,做个简单的测试:

可以看到python2在处理中文上会出现错误,而英文就可以。python3则不会出现这些问题。问题已经抛出来了,现在就来慢慢解释这个字符编码问题。
字符编码前世今生
字符串是一个数据类型,但是,字符串比较特殊的还有一个编码问题。
因为计算机只能处理数字,如果要处理文本,必须要将文本转换为数字才可以处理。而在计算机被设计的时候,采用的是8个比特位(bit)作为一个字节(byte),所以一个字节能够表示的最大字节数为255,如果要表示更大的数,则需要更多的字节。
由于计算机是美国人发明的,所以,最早只有127个字符被编码到计算机中,里面只包括了大小写的英文,符号,数字。这个表被称为ASCII码表。随着计算机技术的不断发展,得到了全球的普及,这就导致了一个问题,如何让计算机认识本国的语言。在中国,汉字的数量远远大于一个字节能够存储的范围,至少需要两个字节,而且还不能和原有的ASCII码表有冲突,所以,中国制定了GB2312编码,将中文编入其中。
中国如此,其他国家也是如此,每个国家根据自己国家的语言制定了码表就不可避免的产生冲突,结果就是,在多种语言混合的文本中,显示出来会有乱码。
为了解决这个问题,Unicode应运而生,Unicode码表将所有的语言统一到一套编码中,这样就不会产生乱码问题了。Unicode标准也在不断的发展,最常用的是用两个字节表示一个字符(如果是生僻字,就需要4个字节),现代操作系统和大多数的编程语言都直接支持Unicode。
Unicode码表虽然好,但是有一个问题:太长了!比如把ASCII编码的“A”用Unicode编码,只需要在前面补0就可以了。因此”A“的ASCII码表的Unicode编码是”000000000 01000001“。你需要的有效的数据只是后面的一个字节,如果使用的是Unicode编码编写一个英文的的文章的话,你会需要多一倍的空间,在存储和传输就十分的不划算。
所以,为了节约空间,又出现了把Unicode编码转化为”可变长编码“的”UTF-8编码“。”UTF-8编码“把一个Unicode字符根据不同的数字大小编码成了1-6个字符,常用的英文字母被编码成了1个字节,汉字通常是3个字节,只有很生僻的字符才被编码成4-6个字符。除了节省空间,还有一个好处就是ASCII编码可以看成是UTF-8编码的一部分。之前的那些用ASCII编码的文件可以在UTF-8下继续工作。
使用记事本的时候,首先,将从文件中读取的UTF-8字符转换为Unicode字符到内存中,编辑完成之后,保存的时候是将Unicode转换为UTF-8保存到文件中
浏览网页的时候,服务器会动态的生成Unicode内容转换为UTF-8再传输到浏览器。网页中的<meta charset="UTF-8" />就是表示该网页用的是UTF-8编码
python2的字符串编码问题解决
一开始说到,python3不会出现乱码的问题,是因为再python3中字符串是用Unicode编码的,也就是说,python的字符串可以支持多种语言。python2出现乱码是因为它默认采用的是ASCII编码格式。所以在使用之前,需要指定它的编码格式。
比如:

第一行的“# -*-coding:utf-8 -*-”就是声明使用的是UTF-8编码格式。
ImportError
导致这个问题有两个原因:
一个是循环导入,首尾相连
这样可以去报错信息中看第一个和最后一个是不是同一个
一个是导入该变量的时候还不存在。
慢慢补充中。。。。。。。。
python基本使用时常见错误的更多相关文章
- pyppeteer使用时常见的bug及基本使用(转)
pyppeteer使用时常见的bug及解决办法: https://blog.csdn.net/Mr__lqy/article/details/102626025 pyppeteer的基本使用: htt ...
- python 处理protobuf 接口常见错误
python 处理protobuf 接口常见错误 1.问题 : Assignment not allowed to repeated field '> http://www.coin163.co ...
- python pip 使用时错误: Patal error in launcher:Unable to create process using '"'
当前我的电脑配置是64位, 装有python2.7 和python 3.6 两个版本 在使用pip install mysqlclient 的时候,出现了 Patal error in launch ...
- Python新手入门学习常见错误
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...
- Python运行时的常见错误
1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加冒号(:)(导致 “SyntaxError :invalid syntax”) 2)使用 ...
- Zabbix探索:Zabbix API使用时的错误1
好久没来了,最近比较疲倦,估计是从年初到现在没有休息的原因. 刚刚批量导入网络设备到Zabbix时,报错: Cannot implode expression 后面自然是IP和触发器的表达式. 最初还 ...
- python程序编写中常见错误
1,NameError语法错误 s还没定义,给s赋值就行了 2,IndexError 索引错误 对于列表l1来说,只有4个元素,所以l1的Index只能是0-3,当你所输入的Index不在这范围,就会 ...
- 【python+selenium学习】常见错误: 'gbk' codec can't decode byte 0xb0 in position 30
最近编写的自动化脚本,数据部分使用到了从配置文件中取,即自定义config.ini,但是在读取配置文件的时候却报错了'gbk' codec can't decode byte 0xb0 in posi ...
- Python中 "+=" 使用时的注意事项
代码1: >>> l1=range(3) >>> l2=l1 >>> l2+=[4] >>> l1 [0, 1, 2, 4] & ...
随机推荐
- Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32)
Bootloader 跳转到 RT-Thread 或 FreeRTOS(基于 STM32) 作者:猾蚁 QQ:7376220一.Bootloader 程序1. 准备好升级程序项目,可以使用 STM32 ...
- Jetty数据同步使用
1. Jetty简介 Jetty 是一个开源的servlet容器,它为基于Java的web容器,例如JSP和servlet提供运行环境.Jetty是使用Java语言编写的,它的API以一组JAR包的形 ...
- Qt 日志输出
Qt学习(3)日志输出 普通的打印输出 用 QtCreator 开发 Qt 程序时, 经常需要向控制台打印一些参数.有时候是查看对象的属性是否被正确设置,有时候是查看程序是否执行了某一段代码,或者执行 ...
- POJ 1861 ——Network——————【最小瓶颈生成树】
Network Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 15268 Accepted: 5987 Specia ...
- ASP.NET操作DataTable各种方法
转:http://www.cnblogs.com/isking/p/6178268.html http://www.cnblogs.com/sntetwt/p/3496477.html public ...
- Ajax提交表单数据(包含文件)
1. 表单数据->JSON->后台 2. 表单序列化[方式一] jquery.serializejson.js <script src="/js/jquery.serial ...
- .Net Core 应用框架。
1.分布式系统框架 https://github.com/MassTransit/MassTransit 2.搜索引擎 https://github.com/XiLife-OSPC/Masuit. ...
- sass-基础
导入: sass的导入(@import)规则和CSS的有所不同,编译时会将@import的scss文件合并进来只生成一个CSS文件. 但是如果你在sass文件中导入css文件如@import 'res ...
- 在Git上创建新分支(实用性高!!!)
在github上创建仓库: Create a new repository on the command line touch README.md git init git add README.md ...
- iDempiere 使用指南 生产插件(Manufacturing)安装过程
Created by 蓝色布鲁斯,QQ32876341,blog http://www.cnblogs.com/zzyan/ iDempiere官方中文wiki主页 http://wiki.idemp ...