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