1. 程式人生 > >02-python練習:列印歌詞(字串操作練習),播放器播放歌詞方式(到時間出現對應歌詞)

02-python練習:列印歌詞(字串操作練習),播放器播放歌詞方式(到時間出現對應歌詞)

方法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