02-python練習:列印歌詞(字串操作練習),播放器播放歌詞方式(到時間出現對應歌詞)
阿新 • • 發佈:2019-01-07
方法1:
musicLrc = r"""[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] """ import time #通過]來得知總共需要列印多少歌詞 counter = musicLrc.count("]") #分行切割 list1 = musicLrc.splitlines() # num是計算打了多少行資料了num = 0 #標記位 time_self_flag = 0 #開始 start_time = time.clock() while True: end_time = time.clock() #獲取分鐘 end_time_min = end_time//60 #獲取秒鐘 end_time_sec = (end_time//1)%60 #獲取微妙 end_time_ms = (end_time*100//1)%100 #將時間按照 [時:分:秒 複製給變數time_self1 time_self1 = "[%02.0f:%02.0f.%02.0f" % (end_time_min, end_time_sec, end_time_ms) #這裡進行判斷,是為了避免在同一時間對所有歌詞判斷多遍 if time_self1 != time_self_flag: time_self_flag = time_self1 # print(time_self1) for i in list1: list2 = i.split("]") for j in list2: #時間戳 與 歌詞時間進行對比,相同則列印,不同則推出 if j == time_self1: print(j+"]"+list2[-1]) num += 1 break #列印完所有歌詞,則退出while迴圈 if num == counter: break
方法2:
import time dict1 = {} list_key = [] #1.提取出時間和歌詞 music_list1 = musicLrc.splitlines() for i in music_list1: music_list2 = i.split("]") # print(music_list2) for j in range(len(music_list2)-1): # print(music_list2[j][1:]) list2 = music_list2[j][1:].split(":") # 2.將字串時間轉換成整型資料 times = float(list2[0])*60+float(list2[1]) # print(times) # 3.轉換成字典 dict1[times] = music_list2[-1] # print(dict1) #4.將字典中的key(就是時間),提取出來,存放在list,並進行排序 for key in dict1.keys(): list_key.append(key) #排序 list_key.sort() #按時間順序打印出歌詞 # for key in list_key: # print(key,dict1[key]) #播放器方式列印歌詞 start_time = time.clock() flag_music = 0 for key in list_key: #取整數 keys = key//1 while True: # 取整數 end_time = time.clock()//1 if end_time == keys: print(key,dict1[key]) break