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

Python读取文本文件如何跳过前两行?附代码及报错详情

如何正确跳过文本文件的前两行并避免索引越界错误?

嘿,我来帮你搞定这个问题!你的代码现在会遍历文件里的每一行,包括前两行的标题内容——而标题行拆分后根本没有第7个元素(对应索引6),这就是你遇到“Out of range”错误的原因。下面给你两种实用的解决方案,其中第一种更适合大多数场景:

方案1:用迭代器跳过前两行(推荐)

文件对象本身就是迭代器,我们可以直接调用next()方法两次来跳过前两行,这种方法不需要把整个文件加载到内存,处理大文件也很高效:

from collections import Counter
counter = Counter()
with open('demo.txt') as f:
    # 跳过第一行和第二行标题
    next(f)
    next(f)
    for line in f:
        splits = line.split(';')
        # 加个判断避免格式错误的行触发索引问题
        if len(splits) >= 7:
            # 记得去除字符串前后的空格,避免转float失败
            change = float(splits[6].strip())
            country = splits[1].strip()
            counter[country] += change

print("\nPercentage Change By Countries")
for country, change_sum in counter.most_common():
    # 格式化输出让结果更美观
    print(f"{country}: {change_sum:.2f}%")

方案2:用readlines()切片(适合小文件)

如果你坚持要用readlines(),可以对读取到的行列表做切片,直接从第三行(索引为2)开始处理。不过这种方法会把整个文件内容加载到内存里,文件很大时不推荐:

from collections import Counter
counter = Counter()
with open('demo.txt') as f:
    lines = f.readlines()
    # 从索引2开始,跳过前两行
    for line in lines[2:]:
        splits = line.split(';')
        if len(splits) >= 7:
            change = float(splits[6].strip())
            country = splits[1].strip()
            counter[country] += change

print("\nPercentage Change By Countries")
for country, change_sum in counter.most_common():
    print(f"{country}: {change_sum:.2f}%")

额外提醒

不管用哪种方法,都建议加上len(splits) >=7的判断——万一文件里有空行或者格式错误的行,能避免再次触发索引越界错误。同时对splits里的元素调用strip(),可以去除前后的空格,避免转换float时出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:42:21