Python练习:异常

题目1

鼠标右键点击这里,弹出菜单中,选择 链接另存为,下载数据文件 0016_1.txt 到本机上。

这个是一个数据文件,格式如下

薛蟠     4560 42
薛蝌     4460 25
薛宝钗   5776 43

请大家写一个程序,依次打印出里面的每一行内容的字符串长度。

注意: 这个文件应该是UTF8编码的格式,但是,由于历史原因,可能里面有些字符不是UTF8编码。

要求大家再解码每行内容的时候,如果UTF8解码错误,捕获该类型的错误,打印出 错误编码在文件中的行数,并且能够继续进行后续行的处理。

最后输出结果格式如下

第0001行,有14个字符
第0002行,有14个字符
第0003行,有13个字符
第0004行,有非utf8编码字符!!!!!!!!!!!
第0005行,有13个字符
第0006行,有14个字符

答案与解析

答案视频讲解


扫码分享给朋友,一起学更有动力哦


















































题目1-答案

# 因为文件可能包含非UTF8编码字符
# 不能指定全文使用UTF8解码
# 所以使用二进制模式打开
with open ('0019.txt','rb') as f:
    bytesLines = f.read().splitlines()
    

lineIdx = 1    
for  bytesLine in bytesLines:
    try:
        infoStr = bytesLine.decode('UTF8')
        print(f'第{lineIdx:04}行,有{len(infoStr)}个字符')
    
    except UnicodeDecodeError:
        print(f'第{lineIdx:04}行,有非UTF8编码字符 !!!')
    
    lineIdx += 1