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

Python读取文件按字母排序输出时如何跳过首行内容

问题原因

当前代码会把文件所有读入的行全部纳入排序范围,没有排除包含Name、Price字段的表头行,因此不符合需求。

修改方案

方案1:固定跳过首行(适用于表头始终在文件第一行的场景)

读入所有行后,通过列表切片直接切掉第一个元素(即索引为0的表头行)即可,同时可以过滤掉文件中无意义的空行,避免输出多余空白:

fname = input('Enter the file name: ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened:', fname)
    exit()

print("")

data = fhand.readlines()
# 跳过第一行表头,过滤空行并去除每行首尾的换行、空格
data = [line.strip() for line in data[1:] if line.strip()]
data.sort()
for line in data:
    print(line)

方案2:动态识别表头行(适配你提供的测试文件,兼容性更好)

如果表头位置不固定,可以直接判断行内容是否包含Name、Price这类表头特征字段,命中则跳过,不加入排序池:

fname = input('Enter the file name: ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened:', fname)
    exit()

print("")

data = []
for line in fhand:
    line_stripped = line.strip()
    # 跳过空行
    if not line_stripped:
        continue
    # 识别到表头行直接跳过
    if 'Name' in line_stripped and 'Price' in line_stripped:
        continue
    data.append(line_stripped)

data.sort()
for line in data:
    print(line)

注意:Python默认字符串排序规则为ASCII码排序,大写字母优先级高于小写字母,如果需要忽略大小写统一按字母顺序排序,可以将排序代码修改为data.sort(key=str.lower)。

运行效果

针对你提供的测试文件,运行修改后的代码会输出如下排序结果:

Flash, 300, 1, Figurine, Dc
Hulk, 100, 1, Figurine, Marvel
Obi Wan Kenobi, 400.99, 1, Figurine, Star Wars
Spiderman, 30.50, 1, Comic, Marvel
Superman, 150, 1, Figurine, DC
Wolverine, 20, 2, Comic, Marvel

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:54:43