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

