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
相关产品推荐
相关产品推荐

