跳转至

Python练习:异常

题目1

{点击这里下载文件 ,解压后得到文件 0019.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

您需要高效学习,找工作? 点击咨询 报名实战班

点击查看学员就业情况