python中--try except 异常捕获以及正则化、替换异常值
1.异常处理过程
异常名称 | 描述 |
---|---|
BaseException | 所有异常的基类 |
SystemExit | 解释器请求退出 |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
Exception | 常规错误的基类 |
StopIteration | 迭代器没有更多的值 |
GeneratorExit | 生成器(generator)发生异常来通知退出 |
StandardError | 所有的内建标准异常的基类 |
ArithmeticError | 所有数值计算错误的基类 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零(所有数据类型) |
AssertionError | 断言语句失败 |
AttributeError | 对象没有这个属性 |
EOFError | 没有内建输入,到达EOF标记 |
EnvironmentError | 操作系统错误的基类 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
WindowsError | 系统调用失败 |
ImportError | 导入模块/对象失败 |
LookupError | 无效数据查询的基类 |
IndexError | 序列中没有此索引(index) |
KeyError | 映射中没有这个键 |
MemoryError | 内存溢出错误(对于Python解释器不是致命的) |
NameError | 未声明/初始化对象(没有属性) |
ReferenceError | 弱引用(Weakreference)试图访问已经垃圾回收了的对象 |
RuntimeError | 一般的运行时错误 |
NotImplementedError | 尚未实现的方法 |
SyntaxError | Python语法错误 |
IndentationError | 缩进错误 |
TabError | Tab和空格混用 |
SystemError | 一般的解释器系统错误 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
UnicodeError | Unicode相关的错误 |
UnicodeDecodeError | Unicode解码时的错误 |
UnicodeEncodeError | Unicode编码时错误 |
UnicodeTranslateError | Unicode转换时错误 |
Warning | 警告的基类 |
DeprecationWarning | 关于被弃用的特征的警告 |
FutureWarning | 关于构造将来语义会有改变的警告 |
OverflowWarning | 旧的关于自动提升为长整型(long)的警告 |
PendingDeprecationWarning | 关于特性将会被废弃的警告 |
RuntimeWarning | 可疑的运行时行为(runtimebehavior)的警告 |
SyntaxWarning | 可疑的语法的警告 |
UserWarning | 用户代码生成的警告 |
- AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
- IOError 输入/输出异常;基本上是无法打开文件
- ImportError 无法引入模块或包;基本上是路径问题或名称错误
- IndentationError 语法错误(的子类) ;代码没有正确对齐
- IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
- KeyError 试图访问字典里不存在的键
- KeyboardInterrupt Ctrl+C被按下
- NameError 使用一个还未被赋予对象的变量
- SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
- TypeError 传入对象类型与要求的不符合
- UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,导致你以为正在访问它
- ValueError 传入一个调用者不期望的值,即使值的类型是正确的
2.异常处理方式
2.1 单个异常处理
语法如下:
try:
code #处理的语句
except Error1 as e: #遇到Error1执行下面的语句,在python2中写成except Error1,e
print(e)
demo
name = [1,2,3]
try:
name[3] #不存在3这个下标值
except IndexError as e: #抓取 IndexError 这个异常
print(e) #e是错误的详细信息
#输出
list index out of range
2.2 多个异常处理
语法如下:
try:
code
except Error1 as e: #处理Error1异常
print(e)
except Error2 as e: #处理Error2异常
print(e)
代码如下:
name = [1,2,3]
data = {"a":"b"}
try:
data["c"] #这边已经出现异常KeyError ,所以直接跳出code,跳到KeyError 下去处理
name[3]
except IndexError as e:
print(e)
except KeyError as e:
print(e)
#输出
‘c’
合并成1个except,语法如下:
try:
code
except (Error1,Error2,...) as e:
print(e)
try:
data["c"]
name[3]
except (IndexError,KeyError) as e:
print(e)
#输出
‘c’
注:第二种写法的用处:括号里面的所有错误,不管出现里面任何一种错误都用统一的处理方法。
2.3 Exception异常
try:
code
except (Error1,Error2,...) as e:
print(e)
except Exception as e: #用Exception表示一下子抓住所有异常,这个一般情况下建议在异常最后面用,用在最后抓未知的异常
print(e)
demo
try:
open("qigao.text","r",encoding="utf-8")
except (IndexError,KeyError) as e: #没有IndexError,KeyError这两个异常
print(e)
except Exception as e: #只能通过这个异常处理,Exception 抓住所有的异常
print(e)
#输出
[Errno 2] No such file or directory: ‘qigao.text’
2.4 else用途
作用:没有异常,则走else部分的逻辑代码
try:
print("qigao,handson") #代码没有异常
except (IndexError,KeyError) as e:
print(e)
except Exception as e:
print(e)
else: #没有异常出错,走else的逻辑代码
print("没有异常")
#输出
qigao,handson
没有异常
2.5 finnally作用
try:
code
except (Error1,Error2,...) as e:
print(e)
except Exception as e:
print(e)
else:
print("没有错误,执行")
finnally:
print("不管有没有错,都执行finnally")
2.6 自定义异常
class GaoError(Exception): #定义一个异常类,继承Exception
def __init__(self,message):
self.message = message
def __str__(self):
return self.message #给对象取一个名
try:
raise GaoError("数据库连接不上了") #触发自定义异常,GaoError("数据库连接不上了")这个对象
except GaoError as e:
print(e)
触发自定义异常:
2.7 断言
断言被用作你接下来的程序执行,如果后面程序依赖于前面的程序,后面的程序有很重要,就是后面的程序执行肯定不能出错,所以在执行之前要做检查工作。
class C(object):
def __init__(self):
self.name = "AAAAA"
c_obj = C()
assert c_obj.name == "AAAAA" #断言
print("没有错误继续...")
#输出
没有错误继续…
断言不符合
class C(object):
def __init__(self):
self.name = "AAAAA"
c_obj = C()
assert c_obj.name == "BBBBB" #断言出字符串不匹配
print("没有错误继续...")
Traceback (most recent call last):
File "E:/PycharmProjects/pytest/day7/断言.py", line 10, in <module>
assert c_obj.name == "BBBBB
AssertionError #报断言异常错误
3. 正则化、替换异常值
#输出结果整合:
import json
from pprint import pprint
import json
import pandas as pd
enddate=timeUtils().getAnyDay(-1)
input_path=
result_path =
output_path =
def get_textLine(path):
string_list = []
string_list1 = []
file_data = pd.read_table(path,sep = r'\001',encoding="UTF-8")
for index, elem in file_data.iterrows():
string_list.append(elem[0])
string_list1.append(elem[1])
return string_list,string_list1
def get_textLine1(path):
string_list = []
file_data = pd.read_table(path,sep = r'\001',encoding="UTF-8")
for index, elem in file_data.iterrows():
string_list.append(elem[0])
return string_list
data_input,label=get_textLine(input_path)
data_result=get_textLine1(result_path)
# print(data_input[:3])#查看中间结果
print(data_result[200:300])
# print(len(data_result))
# pred =re.sub("\[\{\'text\': \'([0-9])\', \'probability\': (0.[0-9]+)}]",r'\1<-\2', text)
cases = []
# cases1 = []
for i in range(len(data_result)):
try:
if data_result[i]=='\"\"':
index=str(0)
# index1=str(0)
#异常暂时替换为0
else:
pred =re.sub("\[\{\'text\': \'([0-9])\', \'probability\': (0.[0-9]+)}]",r'\1<-\2', data_result[i]) #'\[\{\'text\': \'([0-9+])\'',r'\1'
index=pred[0]
# index1=pred[3:]
except IndexError as e:
index = 'UNK'
# cases.append(f'{data_input[i]}\001{label[i]}\001{pred}')
cases.append(f'{index}')
# cases1.append(f'{index1}')
# final_data=pd.DataFrame(columns = ['content','label','pred','probability'])
final_data=pd.DataFrame(columns = ['content','label','pred'])
final_data['content']=data_input
final_data['label']=label
final_data['pred']=cases
# final_data['probability']=cases1
# final_data.to_csv(output_path, sep='\001',index=False,header=False)
print(final_data[250:300])
# final_data.to_csv(output_path, sep='\001',index=False,index_label=False,header=False)
#查看结果
# print(final_data)
# test=pd.read_csv(output_path,encoding="UTF-8",sep = r'\001',index_col="content")
# test=pd.read_csv(output_path,encoding="UTF-8",sep = r'\001')
# print(test.head(30))
# with open(output_path, 'w', encoding='utf8')as f:
# for case in cases:
# print(case) #查看输出
# f.write("\n".join(case))
print("数据已上传oss")
4.读取的时候跳过异常行!
df = pd.read_csv(filename, error_bad_lines = False)
python中--try except 异常捕获以及正则化、替换异常值的更多相关文章
- Python中出现的异常
简单的写几种我知道的关于Python中出现的异常含义,希望大神批评指正,我只是学软件开发的菜鸟,前面的路还很长,我会努力学习! 什么是异常? 异常既是一个事件,该事件会在程序执行过程中发生,影响了程序 ...
- Python中常见的异常总结
Python中常见的异常总结 当Python检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常. 一.异常错误 a.语法错误 错误一: if ...
- 【python】-- try except (异常捕获)、断言
try except (异常捕获) 当程序出错了,但是我们又不想让用户看到这个错误,而且我在写程序的时候已经预料到了它可以出现这样的错误,出现这样的错误代表着什么,我们可以提前捕获这些个错误 1.异常 ...
- Python之路-Python中文件和异常
一.文件的操作 open函数 在python中,使用open函数,打开一个已经存在的文件,或者新建一个新文件. 函数语法 open(name[, mode[, buffering[,encoding] ...
- T-SQL编程中的异常处理-异常捕获(catch)与抛出异常(throw)
本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出,本文简单介绍异常捕获与异 ...
- T-SQL编程中的异常处理-异常捕获(try catch)与抛出异常(throw)
本文出处: http://www.cnblogs.com/wy123/p/6743515.html T-SQL编程与应用程序一样,都有异常处理机制,比如异常的捕获与异常的抛出(try catch th ...
- python中字符串操作--截取,查找,替换
python中,对字符串的操作是最常见的,python对字符串操作有自己特殊的处理方式. 字符串的截取 python中对于字符串的索引是比较特别的,来感受一下: s = '123456789' #截取 ...
- python基础学习1 -异常捕获
#!/usr/bin/env python # -*- coding:utf-8 -*- #-------try-except try: file_name = input("请输入需要打开 ...
- python中自定义超时异常的几种方法
最近在项目中调用第三方接口时候,经常会出现请求超时的情况,或者参数的问题导致调用异代码异常.针对超时异常,查询了python 相关文档,没有并发现完善的包来根据用户自定义的时间来抛出超时异常的模块.所 ...
- python 中常见的异常类型汇总
异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Exception 常规错误的基类 ...
随机推荐
- 【django drf】 阶段练习
目录 需求 settings.py views.py urls.py serializers.py permissions.py page.py authenticate.py model.py 权限 ...
- 开源项目因支持乌克兰遭issue刷屏,网友:别用Nginx,别用元素周期表
大家好,我是DD. 昨天,两条科技界的新闻炸了,一条是关于GitHub发文封锁俄罗斯,一条是关于Oracle暂停俄罗斯所有业务.一个是全球最大的开源软件社区,一个是全球最大的数据库软件厂商.似乎巨头的 ...
- AtCoder Beginner Contest 162 C~F
比赛链接:Here AB水题, C - Sum of gcd of Tuples (Easy) 题意:\(\sum_{a=1}^{K} \sum_{b=1}^{K} \sum_{c=1}^{K} g ...
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200)(AB水题,C思维,D搜索,E DP)
补题链接:Here A - Century 整除 \(200\) 并且判断能否整除完全 B - 200th ABC-200 按题意即可 C - Ringo's Favorite Numbers 2 求 ...
- 新零售标杆 SKG 全面拥抱 Serverless,敏捷交付
副标题:SKG 渠道中台借助 SAE +大禹打造云原生 DevOPS,提效 60% 作者:陈列昂(SKG).昕辰.龙琛.黛忻 项目背景 未来穿戴健康科技股份有限公司(SKG)是一家专注为个人与家庭提供 ...
- poi 4.11版本 word模板操作
写代码之前先说说遇到的问题,之前word模板是使用poi 3.9的包实现的,之后又写了exlce上传下载的功能使用的是poi 4.11的版本,他们之间融合的时候发现包冲突,总有一个功能不能使用,之后发 ...
- git branch 分支命令图文详解
https://blog.csdn.net/wangdawei_/article/details/124556712 git branch 分支命令详解git branch (查看本地分支)git b ...
- P2196-DP【黄】
清醒了一点后我又写了一道黄色DP题,做出来了,还行,开心不少了... 中途暴露出一些问题 1.深搜过程中既然用了二维数组,那么深搜时就应该用二维循环取最优解,而不是只从最后一行中进行一维循环取最优解. ...
- java进阶(30)--Hashtable集合与Properties集合
一.Hashtable简介 1.HashMap与Hashtable区别 Hashtable的key与value均不能为空,而HashMap均可以 2.Hashtable方法带有Synchronized ...
- 帮助编写异步代码的ESLint规则
调试 JavaScript 中的异步代码有时就像在雷区中穿梭.你不知道 console.log 会在何时何地打印出来,也不知道代码是如何执行的. 你很难正确构造异步代码,使其按照你的意图以正确的顺序执 ...