昨天试着写过一次歌词解析,不过想了半天都没什么头绪就在网上浏览了各位网友的代码,有了思路后自己写了下,今天又为了记忆重新写了次,并做了部分优化。

歌词是这样的:

[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:该字典的keyvalue值分别用来存放播放时间和歌词
        '''
        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)
这里是运行结果。Python3 歌词解析的练习

还是新手,如果有什么不规范的地方和错误欢迎指出。。


相关文章: