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 常规错误的基类 ...
随机推荐
- & 0xFF 作用 取低8位
& 0xFF 取低8位 @Test void byteTest() { byte hex1 = (byte) 127; byte hex2 = (byte) 383; byte hex3 = ...
- 【Vue】阶段练习
目录 需求 参考汽车之家 首页 登录功能 展示所有汽车页面 项目 登录页面 跨域请求 一 同源策略 二 CORS(跨域资源共享)简介 三 CORS基本流程 四 CORS两种请求详解 五 Django项 ...
- C++右值引用与转移语义简要介绍
在 C++11 之前,值类型变量的传递会导致把它完整的拷贝一份 比如说把一个 vector 作为函数返回值赋值给某个局部变量,他就会调用 vector 的拷贝构造函数创建一个完整的副本,把这个副本作为 ...
- C 与 C++ 区别
C 与 C++ 区别 本文介绍 C 与 C++ 之间重要的或者容易忽略的区别.尽管 C++ 几乎是 C 的超集,C/C++ 代码混用一般也没什么问题,但是了解 C/C++ 间比较重要区别可以避免碰到一 ...
- java8 Steam流及Optional的使用
目录 Stream流: 获取流 1. list获取: 2. Map获取 3. 数组获取 流方法分类: 1. forEach(终结方法) 2. count计数(终结方法) 3.filter过滤 4.li ...
- shardingsphere 5.1.1 分库分表
1. mysql配置: application-dubboService = spring-csc-campaign-agent-context.xml kafka.topics.redisAcces ...
- 在wsl2 kali发行版中安装docker
前言 因为不想开虚拟机,而又需要多个linux发行版来做测试,也不想使用docker-desktop来曲线救国,所以想直接安装个docker随时使用,这一路也是踩了不少坑.直接复制进终端进行安装 su ...
- java读取解析endnote文件
有些项目中会要求代码解析endnote文献资料获取一些标准的信息,例如XX在某著名期刊上发表了某篇文章,关于发表文章的这个事情的描述就会给坐着一个endnote文件来记录文章名称.作者.期刊名称.出版 ...
- vue学习笔记 八、toRef的使用
系列导航 vue学习笔记 一.环境搭建 vue学习笔记 二.环境搭建+项目创建 vue学习笔记 三.文件和目录结构 vue学习笔记 四.定义组件(组件基本结构) vue学习笔记 五.创建子组件实例 v ...
- SIP没有摘机消息可以通话吗
概述 SIP流程中,A路没有收到摘机的200 OK响应消息可以通话吗? 客户反馈的问题千奇百怪,公共互联网的问题同样百转千回,让你欲罢不能,头秃方休. 客户报故障,问题描述是这样的,我用号码A打给号码 ...