python歌詞解析器函式封裝

2021-09-02 15:31:32 字數 2366 閱讀 5021

'''

歌詞解析器:把歌詞按照時間節點進行顯示。

1.把歌詞進行解析切片處理,把時間轉成對應的浮點數

3.迴圈自動列印歌詞【結束迴圈的條件,key為none的時候】

'''musiclrc = '''[00:03.50]傳奇

[00:19.10]作詞:劉兵 作曲:李健

[00:20.60]演唱:王菲

[00:26.60]

[04:40.75][02:39.90][00:36.25]只是因為在人群中多看了你一眼

[04:49.00]

[02:47.44][00:43.69]再也沒能忘掉你容顏

[02:54.83][00:51.24]夢想著偶然能有一天再相見

[03:02.32][00:58.75]從此我開始孤單思念

[03:08.15][01:04.30]

[03:09.35][01:05.50]想你時你在天邊

[03:16.90][01:13.13]想你時你在眼前

[03:24.42][01:20.92]想你時你在腦海

[03:31.85][01:28.44]想你時你在心田

[03:38.67][01:35.05]

[04:09.96][03:39.87][01:36.25]寧願相信我們前世有約

[04:16.37][03:46.38][01:42.47]今生的愛情故事 不會再改變

[04:24.82][03:54.83][01:51.18]寧願用這一生等你發現

[04:31.38][04:01.40][01:57.43]我一直在你身旁 從未走遠

[04:39.55][04:09.00][02:07.85]

''''''

思路:1.建立乙個空字典,用來儲存時間key ,歌詞value.

2.把歌詞切割成一行一行的字元

3.由對應的key 取出value.

'''

import time

def getmusicdict(musiclrc):

dictmusic = {}#建立乙個空字典

listline = musiclrc.splitlines()#拆分每一行為乙個元素的列表

#print(listline)

for i in listline:#把每一行元素遍歷出來,準備切割

listline2 = i.split("]")#以]為切割符

#print(listline2)

value = listline2[-1]#遍歷出每乙個列表的最後乙個元素(歌詞)

#print(value)

for j in range(len(listline2)-1):#遍歷出時間字串

keymusic = listline2[j][1:]#根據索引值取出除[的所有字元

#print(keymusic)

keytime = keymusic.split(":")#對遍歷的時間字串以冒號切割

# print(keytime)

musictime = float(keytime[0])*60+float(keytime[1])#計算每個時間的總秒數

# print(musictime)

key = musictime#把時間賦給字典的key值

dictmusic[key] = value#按照時間的key,把歌詞value寫進字典

return dictmusic

# print(dictmusic)

def printmusic(dictmusic,times):

listmusictime = #建立空列表,把字典的key寫進去,對其公升序排列

for key2 in dictmusic.keys():#強制給字典新增下標值,對其遍歷

# print(listmusic)

listmusictime.sort()#預設對列表進行公升序

# print(listmusictime)

time.sleep(listmusictime[0]/times)#對列印的歌詞按照睡眠時間的times倍數列印

for index in range(len(listmusictime)):

if index>0:

time.sleep((listmusictime[index]-listmusictime[index-1])/times)#兩段歌詞之間的時間

print(dictmusic.get(listmusictime[index]))#對列表裡面的key值下標遍歷,進而用get取字典的value

dictmusic = getmusicdict(musiclrc)

printmusic(dictmusic,times)

python歌詞解析器

今天掌握到了歌詞解析器的python基礎語法 實現,個人覺得挺有意思,便展示出來分享分享 注 展示結果為每過相應的時間,輸出端列印相應的歌詞 import time 匯入time模組 song 00 03.50 傳奇 00 19.10 作詞 劉兵 作曲 李健 00 20.60 演唱 王菲 00 26...

歌詞解析器 用python基礎語句依照時間列印歌詞

musiclrc 00 03.50 傳奇 00 19.10 作詞 劉兵 作曲 李健 00 20.60 演唱 王菲 00 26.60 04 40.75 02 39.90 00 36.25 只是因為在人群中多看了你一眼 04 49.00 02 47.44 00 43.69 再也沒能忘掉你容顏 02 54...

使用解析器

使用解析器 使用解析器是非常簡單,可以使用它自己的詞法分析器,但是,用fsyacc.exe 產生的解析器總是要求詞法分析器。在這一小節,我們將討論如何使用自己的詞法分析器,以及與解析器聯合。警告記住f 編譯器不能直接使用.fsl 和 fsy 檔案,需要用fslex.exe 和 fsyacc.exe ...