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 常规错误的基类 ...
随机推荐
- C# Winform 自定义窗口,最大化遮住任务栏
解决 C# Winform 自定义窗口,最大化遮住任务栏 的问题,可以通过获取屏幕大小来控制最大值,来实现,代码如下 Rectangle ScreenArea = System.Windows.For ...
- print('Hello World!')的新玩法
相信很多同学入门Python的第一行代码都是print('Hello World!') print是初学者最先接触的Python函数,但是很多人可能到现在也不完全清楚它的用法. print(*obje ...
- Rust Installation with relative Configuration
References Rust Course The Hitchhiker's Guide to Rust mirrors.tuna.tsinghua.edu.cn Rust Crates 拉取慢的解 ...
- Codeforces Round #741 (Div. 2) 个人题解 A~D
比赛链接:Here 1562A. The Miracle and the Sleeper 题意: 给出 \(l,r\) 求出最大化的 \(a\ mod\ b\) (\(l\le b\le b\le a ...
- Kubernetes: client-go 源码剖析(二)
kubernetes:client-go 系列文章: Kubernetes: client-go 源码剖析(一) Kubernetes: client-go 源码剖析(二) 2.3 运行 inform ...
- kafka Linux环境搭建安装及命令创建队列生产消费消息
本文为博主原创,未经允许不得转载: 1. 安装JDK 由于Kafka是用Scala语言开发的,运行在JVM上,因此在安装Kafka之前需要先安装JDK. yum install java‐1.8.0‐ ...
- zookeeper源码(03)启动流程
本文将从启动类开始详细分析zookeeper的启动流程: 加载配置的过程 集群启动过程 单机版启动过程 启动类 org.apache.zookeeper.server.quorum.QuorumPee ...
- 08-避免Latch的产生
1.Latch简介 Latch就是锁存器,是一种在异步电路系统中,对输入信号电平敏感的单元,用来存储信息 锁存器在数据未锁存时,输出端的信号随输入信号变化,就像信号通过一个缓冲器,一旦锁存信号有效,数 ...
- 结构体中ElementType的使用
1.问题 在定义结构体时,对于元素值,为什么喜欢使用ElementType而不是直接使用int或者char等等? 2.结论 对于int get_result(int x); 和 int get_res ...
- 【转】国产飞腾D2000:基于A72?
https://zhuanlan.zhihu.com/p/612054128 China's Phytium D2000: Building on A72? 国产飞腾D2000:基于A72? PS:麒 ...