博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基本使用时常见错误
阅读量:5330 次
发布时间:2019-06-14

本文共 1633 字,大约阅读时间需要 5 分钟。

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

导致这个问题有两个原因:

一个是循环导入,首尾相连

这样可以去报错信息中看第一个和最后一个是不是同一个

一个是导入该变量的时候还不存在。

慢慢补充中。。。。。。。。

 

转载于:https://www.cnblogs.com/kuxingseng95/p/9044625.html

你可能感兴趣的文章
世界上最便宜的10张防癌处方
查看>>
隐语义模型LFM(latent factor model)
查看>>
[转载]中情局数千份机密文档泄露:各种0day工具、恶意程序应有尽有
查看>>
手动编译高速扫描器MasScan
查看>>
JS学习笔记-OO创建怀疑的对象
查看>>
windows 开启管理员权限
查看>>
FastStone Capture(FSCapture) 注册码
查看>>
IF函数+While函数+For循环
查看>>
SQL删除重复数据只保留一条
查看>>
原生JavaScript第五篇
查看>>
20162306 2017-2018-1 《程序设计与数据结构》第3周学习总结
查看>>
Kev的视频学习
查看>>
keepalived高可用
查看>>
Zabbix 监控搭建
查看>>
AIX下查看磁盘的相关命令
查看>>
navigator.userAgent.toLowerCase();判断浏览器做兼容
查看>>
POJ 1741 Tree 求树上路径小于k的点对个数)
查看>>
UVA 1648 Business Center
查看>>
CF&&CC百套计划2 CodeChef December Challenge 2017 Chef and Hamming Distance of arrays
查看>>
【模板】左偏树(可并堆)
查看>>