昨天试着写过一次歌词解析,不过想了半天都没什么头绪就在网上浏览了各位网友的代码,有了思路后自己写了下,今天又为了记忆重新写了次,并做了部分优化。
歌词是这样的:
[ti: 海阔天空] [ar:黄家驹] [al:乐与怒] [by:mp3.50004.com] [00:00.00]Beyond:海阔天空 [01:40.00][00:16.00]今天我寒夜里看雪飘过 [01:48.00][00:24.00]怀著冷却了的心窝飘远方 [01:53.00][00:29.00]风雨里追赶 [01:57.00][00:33.00]雾里分不清影踪 [02:00.00][00:36.00]天空海阔你与我 [02:03.00][00:39.00]可会变(谁没在变) [00:42.00]多少次迎著冷眼与嘲笑 [00:49.00]从没有放弃过心中的理想 [00:54.00]一刹那恍惚 [00:58.00]若有所失的感觉 [01:01.00]不知不觉已变淡 [01:04.00]心里爱(谁明白我) [03:56.00][03:18.00][02:06.00][01:07.00]原谅我这一生不羁放纵爱自由 [04:01.00][03:24.00][02:12.00][01:13.00]也会怕有一天会跌倒 [04:06.00][03:44.00][03:29.00][02:19.00][01:20.00]被弃了理想谁人都可以 [04:14.00][03:49.00][03:37.00][02:26.00][01:26.00]那会怕有一天只你共我 [03:05.00]仍然自由自我 [03:10.00]永远高唱我歌 [03:13.00]走遍千里 http://lrc.bzmtv.com
代码如下:
from sys import path def lyricRaad(path): with open(path,"r+",encoding="utf-8") as f: lyricList = f.readlines() # print(lyricList) ''' lyricDict:该字典的key与value值分别用来存放播放时间和歌词 ''' lyricDict = {} sortList = [] for lyi in range(len(lyricList)): lyricList[lyi] = lyricList[lyi].replace("["," ") lineList = lyricList[lyi].split("]") # print(lineList) ''' 如果lineList最后的元素是"\n"的话就直接开始下次循环,因为这个值要存到dictValue里 ''' if lineList[-1] == "\n": continue ''' dictValue存的是歌词 ''' dictValue = lineList[-1] # print(dictValue) for linei in range(len(lineList)-1): linek = lineList[linei].split(":") ''' time:总时间 ''' time = float(linek[0])*60 + float(linek[1]) lyricDict[time] = dictValue sortList.append(time) sortList.sort() ''' 尝试通过时间来输出歌词 ''' for now in range(int(sortList[-1]+1)): for pttime in sortList: # print(pttime) if now == int(pttime): print(lyricDict[now]) from time import sleep sleep(1) print("歌词输出完毕。") ''' 歌词文件与本文件在同个文件夹,获取这个目录,当然你也可以填入其他歌词目录。 ''' # print(path) lyricPath = "C:\\Python34\\workspace\\text\\A6_9_18\\海阔天空.lrc" lyricRaad(lyricPath)
这里是运行结果。
还是新手,如果有什么不规范的地方和错误欢迎指出。。