You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python解析黑名单数据触发IndexError: list index out of range错误排查

解决黑名单解析的IndexError问题

问题原因

报错是因为存在空行或者仅含空白字符的行:这类行既不是注释(不startswith('#')),但entry.split()后会得到空列表,此时len(hostname)为0,进入else分支后取hostname[1]自然触发索引越界。原逻辑仅依赖拆分后的长度判断,没考虑这类异常情况。

修正后的代码

blocklist_data = unpack_blocklist_data()
hostnames = []
for entry in blocklist_data:
    # 先去除首尾空白,处理空行或前后空格的情况
    cleaned_entry = entry.strip()
    # 跳过注释行和空行
    if cleaned_entry.startswith('#') or not cleaned_entry:
        continue
    # 仅匹配"0.0.0.0 site.domain.org"格式的条目,拆分取域名
    if cleaned_entry.startswith('0.0.0.0 '):
        # 只拆分一次,避免多余空格干扰
        hostname = cleaned_entry.split(maxsplit=1)[1]
        hostnames.append(hostname)
    else:
        # 其他情况直接使用清理后的域名
        hostnames.append(cleaned_entry)
return hostnames

关键改动说明

  • 清理空白:用strip()处理每行首尾的空格、换行符,过滤空行干扰。
  • 精准格式匹配:不再依赖拆分后的长度判断,直接检查是否以0.0.0.0 (带空格)开头,只对目标格式做拆分操作。
  • 安全拆分:split(maxsplit=1)仅拆分一次,即使域名后有多余空格也不会影响结果。
  • 过滤空行:新增空行判断,彻底避免空列表导致的索引错误。

内容的提问来源于stack exchange,提问作者uncrayon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 14:45:37