split函数 (二) python

本文介绍了解决文本处理中因分隔符缺失导致的错误的方法,包括添加逻辑判断和使用try...except语句来捕获并处理异常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在继续sketch.txt文本时,会发生另外一种错误:


错误信息是: need more than 1 value to unpack, 也就是说需要1个值以上才可以分割,继而想到是不是文本里面有的行的内容是没有分号分割的。

经检查看到:


有两行的内容是只有一部分,没有冒号分割,即每行都是(pause),这么来解决这种问题呢??

下面引入了2种方法来解决问题:

1.是添加额外的逻辑判断

2.是写完code直接运行,若程序有问题会给于反馈,trackback,然后根据trackback的提示去修复程序

对于第一种处理异常的方法,我们需要做的是先判断什么样的行是需要进行分割的,也就是要判断每一行是否有冒号,有几个冒号。

对于第二种处理异常的方法,则是不去避免错误,直接让错误发生,然后在出现错误的地方进行修复。

下面来看一下第一个处理异常方法的实例:

实例:建立了一个txt文本文件里面的内容为:


我们把每行的内容分成两部分,角色和说的话:

代码为:


输出的结果为:



在程序中的两个判断语句的作用是相同的,都是如果找到冒号则进行分割,在找冒号的过程中我们用到了find()函数,下面来解析一下这个函数。

find函数的原型是:find(被查找的字符,查找的首字母位置(下标默认从0开始),查找的末尾位置(不包括末尾位置,下标默认为-1))

find函数的返回值是:if查询到此字符则返回到第一次出现此字符的位置。if没有查到此字符,则返回到-1


到此解决方法1即添加额外的逻辑判断结束,他是解决了问题,但是这个方法具有局限性,如果我们的分隔符不是冒号,而是别的别的符号就会引起诸多不便。那么方法2会不会好一些呢?下面我们来看方法二:

对比一下程序执行正常代码和异常代码的流程:




由此引入try...except语句,try用来捕获由python或者程序本身引发的异常,except用来处理异常。

except后面可以跟异常名,如果

try:
    x=int(input("请输入数字:"))
except ValueError: #可以同时捕获多个异常,写法如except(RuntimeError,ValueError):
    #当输入非数字时
    print"您输入不是数字"
except: #省略异常名,可以匹配所有异常,慎用
    pass
else:#当没有异常时
    print 'result=',result
finally:#一般用于释放资源,如文件,网络连接。
   print 'finish'

该种异常处理语法的规则是:

·  首先 执行try下的语句(即try和except之间的语句):

         If (try下的语句没有引发异常

               则try语句执行完毕,跳过except语句。

        else  (try下的语句引发异常

              则跳过try子句中剩余的句子;跳到except语句,如果异常和except后面知道的异常名匹配;然后再继续执行try语句后面的程序。

               如果except后面的异常名和发生的异常不匹配,则异常未被处理;错误信息显示。

              一个try语句可以有多个except语句,为不同的异常提供不同的处理。如果第一个except异常名不符合则执行下一个except语句

         一个except又可以列出多个意外,例如:except(RuntimeError, TypeError, NameError),此方法要避免使用,容易错失异常

try...except后面还可以加else语句,当没有异常发生的时候则执行else语句。


下面是一个实例:

输出:


下面是一些Error的总结:

用第二种方法来处理异常如下:


输出结果为:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值