我是靠谱客的博主 开放牛排,最近开发中收集的这篇文章主要介绍python 常见错误梳理和解析,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

近期小白在自学Python,写了一些代码,运行的时候遇到过各种错误,现梳理出来,给大家做个参考。

一、简单类错误

1.SyntaxError: unexpected EOF while parsing

错误原因:

一般是书写格式错误,比如少了括号,for,if语句后少了分号等,缩进不对等

解决办法:

对应的检查代码,根据提示的错误行进行修改。对于缩进,建议用回车或者insert键,别用空格打,容易出问题

2. AttributeError: 'str' object has no attribute 'write'

错误原因:

比如代码是f.write(),错误说明f是字符串,不是文件。

解决办法:修改对应的代码即可,正常的写入文件代码如下:

with open(‘test.txt’,’’w+) as f:

      f.write(a)

3.NameError: name 'json' is not defined

错误原因:

表示json函数没有定义,表明没有在一开始导入对应的库。

解决办法:

需要在一开始就import json。

4.ModuleNotFoundError: No module named 'demjson'

错误原因:

表示导入的库不存在,需要先下载对应的库文件。

解决办法:

需要先下载demjson库,使用pip3 install demjson命令即可(如果是python2,就去掉pip后面的3)

5.No such file or directory

没有找到所要执行的文件,可能是文件不在当前的目录下

二、进阶类错误

1.TypeError: string indices must be integers

错误原因:

比如代码是:for i in f2['definitions']:

说明f2不是字典,而是字符串。导致循环无法执行

解决办法:

可以利用type()检查下f2的类型。楼主这里主要是前面的json.loads将字符串转为字典没生效导致。

2.TypeError: object of type 'NoneType' has no len()

对于字典类,如果键的值是null,不适合用len(a)==0这种判断,这种适合’a‘:’’这种值为空的情况。

3.IndexError: list assignment index out of range

错误原因:

列表的索引超出了列表实际值的范围,比如列表是a=[1,2,3],对应的索引是a[0]a[1]a[2],如果你使用a[3]就会报错。

这种一般不会出错,而如果是在for循环里,对列表进行for循环,如果满足条件就删除列表元素,由于列表元素删除,但for循环的索引并没有变,导致for循环的索引出现问题

解决办法:

需要再循环后加上[:]切片。比如 for i in a[:]:

4.json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

错误原因:

基本上就是原JSON数据有问题,导致解析不出来,我排查可能的问题:1)字段没有值,直接为None;2)数据最后一行多了个回车;3)

解决办法:

将对应json数据进行检查,修改即可。可以利用JSON Online Validator and Formatter - JSON Lint 网站进行定位排查

5.json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)

错误原因:

json.loads只适合读取严格规整的json,即键和值都是双引号。

解决办法:

json.loads()适合读取格式规整,字段和值都是双引号的JSON;ast.literal_eval()可以读取格式不规整,尤其是Python运行后以字符串的形式写入的JSON文件(核心特征,字段和值是单引号)。切换为ast.literal_eval()函数即可。别忘了一开始import ast

6.ValueError: list.remove(x): x not in list

错误原因:

x不在列表里

解决办法:

List删除三个办法:

list.remove(a),a必须是元素的值

list.pop(a),a必须是元素的索引

list.del(a),a也必须是元素的索引

7. sre_constants.error: unbalanced parenthesis at position 3

使用re函数时,比如要检索括号,不能直接用’C‘,需要在前面加上转义符号。如’(‘

最后

以上就是开放牛排为你收集整理的python 常见错误梳理和解析的全部内容,希望文章能够帮你解决python 常见错误梳理和解析所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(55)

评论列表共有 0 条评论

立即
投稿
返回
顶部