文档章节

python中遇到的错误

Kampfer
 Kampfer
发布于 2016/10/19 17:38
字数 710
阅读 20
收藏 0

“IndentationError”表示缩进错误,遇到的类型有下面几个:

Indentation Error: expected an indented block
Indentation Error: unexpected indent
Indentation Error: unindent does not match any outer indentation level

解决的办法大都是在出现错误的那一行,按Tab或空格(但不能混用)键缩进即可。

“Index Error”表示索引错误,遇到的类型有如下:

IndexError: array index out of range

"KeyError:"使用dict[key]时出现的错误,出现这种情况,最好使用dict.get(key)来检查dict中是否含有目标值,如果返回none的话,就是没有目标键的值。

"TypeError"遇到的情况如下:

TypeError:'unicode' object is not callable 

出现这样的报错,是程序将字符串当作函数使用了。

“UnicodeEncodeError”说明编码有问题

UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: 

字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。

Decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。

Encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。

因此,转码的时候一定要先搞明白,字符串str是什么编码,然后decode成unicode,然后再encode成其他编码

代码中字符串的默认编码与代码文件本身的编码一致。

python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。

解决方法有三中: 1.在命令行修改,仅本会话有效: 1)通过>>>sys.getdefaultencoding()查看当前编码(若报错,先执行>>>import sys >>>reload(sys)); 2)通过>>>sys.setdefaultencoding('utf8')设置编码 2.较繁琐,最有效 1)在程序文件中以下三句

import sys
reload(sys)
sys.setdefaultencoding('utf8')

3.修改Python本环境(推荐) 在Python的Lib\site-packages文件夹下新建一个sitecustomize.py文件,内容为:

#coding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')

重启Python解释器,发现编码已被设置为utf8,与方案二同效;这是因为系统在Python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动加上解决代码,属于一劳永逸的解决方法。 值得说明的是,对于str和unicode之间的转换:

    str--->unicode: str.decode(编码格式)
    unicode-->str: unicode.encode(编码格式)

本文转载自:

Kampfer
粉丝 1
博文 42
码字总数 17477
作品 0
承德
QA/测试工程师
私信 提问
Python常见十六个错误集合,你知道那些?

使用python会出现各种各样的错误,以下是Python常见的错误以及解决方法。 1.ValueError: ‘Conv2d1a3×3’ is not a valid scope name 这个是刚遇到的问题,在LZ自己手打Inception net的时候...

柯西带你学编程
2018/06/08
0
0
Mac 安装jupyter notebook的过程

MAC台式机 python:mac下自带Python 2.7.10 1.先升级了pip安装工具:sudo python -m pip install --upgrade --force pip 2.安装setuptools 工具:sudo pip install setuptools==33.1.1 3.安装......

火力全開
2018/07/16
933
0
Mac OS搭建Python开发环境的几个误区

mac在配置Python开发环境中容易被迷惑的几个误区 个人觉得python发展前景挺好的,就决定自学一段时间python开发,但是在配置环境中就遇到了各种坑,下面就个人的简单说一下。 首先官网下载p...

coder_di
2018/05/22
0
0
Python 实例分析 - 获取MP3歌曲的Tag信息

原文由我发布在:http://yhzhtk.info/2013/06/12/1-python-class-demo-learn-note.html 下面利用一个python的实例程序,来学习python。这个程序的目的就是分析出所有MP3文件的Tag信息并输出。...

YHZH
2013/06/13
581
0
centos7 升级自带的python2.7.5被坑惨了

linux下yum用到了python模块,卸载python会直接导致yum不能用,中间遇到了各种各样的错误,放弃过3次,尝试了4次最终将,python升级为3.6.yum恢复可以使用。注意,如果下载tgz包,tar -zxvf...

S三少S
2019/05/21
52
0

没有更多内容

加载失败,请刷新页面

加载更多

0121 spring-boot-redis的使用

redis是什么呢?redis,属于NoSQL的一种,在互联网时代,起到加速系统的作用。 redis是一种内存数据库,支持7种数据类型的存储,性能1S 10w次读写; redis提供的简单的事务保证了高并发场景下...

李福春carter
30分钟前
28
0
redis的有序集合研究

假设执行下面的操作 jedis.zadd("myzset", System.currentTimeMillis(), "An error is returned when key exists but does not hold a sorted set.\r\n" + "\r\n" ......

强子大叔的码田
48分钟前
33
0
如何防止favicon.ico请求?

我没有favicon.ico,但IE总是提出请求。 是否可以阻止浏览器从我的网站请求favicon? 也许HTML标题中有一些META-TAG? #1楼 你不能。 您所能做的就是使该图像尽可能小,并在将来设置一些缓存...

技术盛宴
49分钟前
34
0
如何在Subversion中返回旧版本的代码?

我正和一位朋友一起开展一个项目,我想回到我们代码的旧版本并将其设置为当前版本。 我该怎么做? 我在vs08上使用“anksvn”。 我在我的电脑上有我想要的版本,但提交失败了; 我得到的消息是...

javail
今天
62
0
全网最全RabbitMQ总结,别再说你不会RabbitMQ

RabbitMQ入门教程 当初我学RabbitMQ的时候,第一时间就上GitHub找相应的教程,但是令我很失望的是没有找到,Spring,Mybatis之类的教程很多,而RabbitMQ的教程几乎找不到,看的最多的就是朱小...

erlieStar
今天
52
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部