为了账号安全,请及时绑定邮箱和手机立即绑定

忽略`for`语句中的异常

忽略`for`语句中的异常

波斯汪 2021-03-10 09:10:34
我正在枚举像这样的大字符集的字符(以GB2312为例,但实际上很大):def get_gb2312_characters():    higher_range = range(0xb0, 0xf7 + 1)    lower_range = range(0xa1, 0xfe + 1)    # see http://en.wikipedia.org/wiki/GB_2312#Encodings_of_GB2312    for higher in higher_range:        for lower in lower_range:            encoding = (higher << 8) | lower            yield encoding.to_bytes(2, byteorder='big').decode(encoding='gb2312')for c in get_gb2312_characters():    print(c)这将不起作用,因为代码页中存在一些“间隙”(或“垃圾”字节组合)。当程序尝试从生成器的最后for一行获取字符时,它将引发一个UnicodeDecodeError。问题是我不能用来像这样try...except包含for循环try:    for c in gb2312:        print(c)except UnicodeDecodeError:        pass因为如果有异常,循环将立即终止,所以在循环中都不使用for像这样的配对for c in gb2312:    try:        print(c)    except UnicodeDecodeError:        pass因为里面没有引发异常。那么有什么办法可以解决这个问题?谢谢你。
查看完整描述

2 回答

  • 2 回答
  • 0 关注
  • 171 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信