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

遍历TXT音乐文件 根据指定歌手名查找对应歌曲名的实现方法

问题背景

现有存储歌曲、流派、歌手信息的TXT文件,格式如下:

song 1
genre 1 
artist 1

song 2
genre 2
artist 2

etc.

每3行描述一首歌曲的完整信息,不同歌曲的信息之间用空行分隔。

需求说明

给定一个歌手名称,若该歌手存在于文件中则返回其对应的所有歌曲名,同一名歌手可能对应多首不同歌曲。

现有代码问题

你当前编写的代码存在以下问题:

  • 额外读取第一行作为表头,但你给出的文件格式没有单独表头,会直接丢失第一首歌曲的信息
  • 直接读取的行末尾自带换行符,未做清洗直接和目标歌手匹配,大概率会匹配失败
  • 遍历行时没有记录行的位置索引,无法回溯当前行上方的内容
实现方案

你可以通过带索引的遍历方式定位歌手行位置,再向上取对应行的歌曲信息,完整可运行代码如下:

# 定义要查询的目标歌手
target_artist = "你要查询的歌手名"
matched_songs = []

with open('music.txt', 'r', encoding='utf-8') as f:
    # 读取所有行的同时去除每行首尾空白,过滤空行,避免空行干扰索引计数
    lines = [line.strip() for line in f if line.strip()]

# 带索引遍历处理后的行
for idx, content in enumerate(lines):
    # 匹配到目标歌手行
    if content == target_artist:
        # 每首歌的信息按「歌曲、流派、歌手」顺序排列,歌手行向上数2行就是对应歌曲名
        # 做索引合法性判断避免越界报错
        if idx - 2 >= 0:
            matched_songs.append(lines[idx-2])

# 输出结果
if matched_songs:
    print(f"歌手 {target_artist} 的对应歌曲:")
    for song in matched_songs:
        print(f"- {song}")
else:
    print(f"未查询到歌手 {target_artist} 的相关歌曲")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:15:03