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] & ...
随机推荐
- 2019.03.22 读书笔记 Linq中的IEnumerable与IQueryable
Linq主要分为 Linq to object .Linq to XML .Linq to sql(现在都用EF了). 针对object和sql,微软分别设计了两套接口IEnumerable.IQue ...
- [转]ASP.NET中JSON的序列化和反序列化
本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码 ...
- 牛客网Java刷题知识点之什么是单例模式?解决了什么问题?饿汉式单例(开发时常用)、懒汉式单例(面试时常用)、单例设计模式的内存图解
不多说,直接上干货! 什么是单例设计模式? 解决的问题:可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 如何保证? 1.不允许其他程序用new ...
- 用 JS 做一个数独游戏(二)
用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...
- 在vs2010使用EF出现CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义
网上查了一通都是在web.config中配置 System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56 ...
- WebView加载页面,带链接的Img在页面第一次加载时无法显示的问题
在做一个App的过程中,用到WebView来显示几个页面.在这个过程中发现有些页面的显示出现了异常:页面中的Img链接在页面第一次加载时无法正常显示图片,退出页面再次进入后可正常显示.开始以为是Web ...
- Gulp工具常用插件
gulp-uglify(js压缩) gulp-uglify安装 // npm install --save-dev gulp-uglify 已过时 npm install --save-dev jsh ...
- Android打包混淆文件模板
# This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usa ...
- Android内存监测工具使用
用 Heap监测应用进程使用内存情况的步骤如下:1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的:2. 将手机通过USB链接至电脑,链接时需要确认手机 ...
- python下载文件
import urllib import urllib2 import requests url = "http://www.blog.pythonlibrary.org/wp-conten ...