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基本使用时常见错误的更多相关文章

  1. pyppeteer使用时常见的bug及基本使用(转)

    pyppeteer使用时常见的bug及解决办法: https://blog.csdn.net/Mr__lqy/article/details/102626025 pyppeteer的基本使用: htt ...

  2. python 处理protobuf 接口常见错误

    python 处理protobuf 接口常见错误 1.问题 : Assignment not allowed to repeated field '> http://www.coin163.co ...

  3. python pip 使用时错误: Patal error in launcher:Unable to create process using '"'

    当前我的电脑配置是64位, 装有python2.7 和python 3.6 两个版本 在使用pip install mysqlclient 的时候,出现了  Patal error in launch ...

  4. Python新手入门学习常见错误

    当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂.这里列出了常见的的一些让你程序 crash 的运行时错误. 1)忘记在 if , elif , else , for , ...

  5. Python运行时的常见错误

    1)忘记在 if , elif , else , for , while , class ,def 声明末尾添加冒号(:)(导致 “SyntaxError :invalid syntax”) 2)使用 ...

  6. Zabbix探索:Zabbix API使用时的错误1

    好久没来了,最近比较疲倦,估计是从年初到现在没有休息的原因. 刚刚批量导入网络设备到Zabbix时,报错: Cannot implode expression 后面自然是IP和触发器的表达式. 最初还 ...

  7. python程序编写中常见错误

    1,NameError语法错误 s还没定义,给s赋值就行了 2,IndexError 索引错误 对于列表l1来说,只有4个元素,所以l1的Index只能是0-3,当你所输入的Index不在这范围,就会 ...

  8. 【python+selenium学习】常见错误: 'gbk' codec can't decode byte 0xb0 in position 30

    最近编写的自动化脚本,数据部分使用到了从配置文件中取,即自定义config.ini,但是在读取配置文件的时候却报错了'gbk' codec can't decode byte 0xb0 in posi ...

  9. Python中 "+=" 使用时的注意事项

    代码1: >>> l1=range(3) >>> l2=l1 >>> l2+=[4] >>> l1 [0, 1, 2, 4] & ...

随机推荐

  1. 2019.03.22 读书笔记 Linq中的IEnumerable与IQueryable

    Linq主要分为 Linq to object .Linq to XML .Linq to sql(现在都用EF了). 针对object和sql,微软分别设计了两套接口IEnumerable.IQue ...

  2. [转]ASP.NET中JSON的序列化和反序列化

    本文转自:http://www.cnblogs.com/zhaozhan/archive/2011/01/09/1931340.html JSON是专门为浏览器中的网页上运行的JavaScript代码 ...

  3. 牛客网Java刷题知识点之什么是单例模式?解决了什么问题?饿汉式单例(开发时常用)、懒汉式单例(面试时常用)、单例设计模式的内存图解

    不多说,直接上干货! 什么是单例设计模式? 解决的问题:可以保证一个类在内存中的对象唯一性,必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性. 如何保证? 1.不允许其他程序用new ...

  4. 用 JS 做一个数独游戏(二)

    用 JS 做一个数独游戏(二) 在 上一篇博客 中,我们通过 Node 运行了我们的 JavaScript 代码,在控制台中打印出来生成好的数独终盘.为了让我们的数独游戏能有良好的体验,这篇博客将会为 ...

  5. 在vs2010使用EF出现CS0012: 类型“System.Data.Objects.DataClasses.EntityObject”在未被引用的程序集中定义

    网上查了一通都是在web.config中配置 System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c56 ...

  6. WebView加载页面,带链接的Img在页面第一次加载时无法显示的问题

    在做一个App的过程中,用到WebView来显示几个页面.在这个过程中发现有些页面的显示出现了异常:页面中的Img链接在页面第一次加载时无法正常显示图片,退出页面再次进入后可正常显示.开始以为是Web ...

  7. Gulp工具常用插件

    gulp-uglify(js压缩) gulp-uglify安装 // npm install --save-dev gulp-uglify 已过时 npm install --save-dev jsh ...

  8. Android打包混淆文件模板

    # This is a configuration file for ProGuard. # http://proguard.sourceforge.net/index.html#manual/usa ...

  9. Android内存监测工具使用

    用 Heap监测应用进程使用内存情况的步骤如下:1. 启动eclipse后,切换到DDMS透视图,并确认Devices视图.Heap视图都是打开的:2. 将手机通过USB链接至电脑,链接时需要确认手机 ...

  10. python下载文件

    import urllib import urllib2 import requests url = "http://www.blog.pythonlibrary.org/wp-conten ...