以字典方式提取歌詞

2022-06-25 13:06:11 字數 2872 閱讀 3020

s = '''

[ti:藍蓮花]

[ar:許巍]

[al:留聲十年絕版青春北京演唱會]

[00:-01.70

]藍蓮花

[00:-00.70

]演唱:許巍

[00:00.00][

00:00.70

]沒有什麼能夠阻擋

[00:06.01

]你對自由的嚮往

[00:11.43

]天馬行空的生涯

[00:16.99

]你的心了無牽掛

[00:21.20][

02:11.55][01:50.60][00:22.63

]穿過幽暗的歲月

[02:16.93][01:55.60][00:27.81

]也曾感到彷徨

[02:22.21][02:01.09][00:33.13

]當你低頭的瞬間

[02:27.62][02:06.33][00:38.32

]才發覺腳下的路

[02:31.64][02:10.23][00:42.37][

02:32.97][00:43.79

]心中那自由的世界

[02:38.23][00:49.50

]如此的清澈高遠

[02:43.30][00:54.31

]盛開著永不凋零

[02:47.70][00:58.50

]藍蓮花

[02:53.95][03:00.06][01:05.41]'''

# 定義乙個字典,儲存歌曲資訊

song_dict ={}

# 定義乙個字典,儲存歌詞資訊

lrc_dict ={}

# 按照換行進行切割

str_list =s.splitlines()

forstring

instr_list:

# 判斷是否是歌詞資訊

ifstring[1

].isdecimal():

# [02:11.55][01:50.60][00:22.63

]穿過幽暗的歲月

# 按照']

'進行切割

lrc_list = string.split(']'

) # 提取歌詞資訊

lrc_info = lrc_list[-1

] # 提取時間資訊

time_info = lrc_list[:-1

] # 遍歷處理每個時間戳

for time_str in

time_info:

# [02:11.55,去掉'['

time_str = time_str[1

:] #

02:01.09,按照':'

進行切割

time_info_list = time_str.split(':'

) # 提取分鐘

time_min = float(time_info_list[0

]) # 提取秒數

time_sec = float(time_info_list[1

]) # 合併時間

time = time_min * 60 +time_sec

# 儲存歌詞及對應的時間戳

lrc_dict[time] =lrc_info

else

: # [ti:藍蓮花]

# 去掉兩邊的

string = string[1:-1

] # 按照':

'進行切割

song_list = string.split(':'

) # 儲存到字典中

if song_list[0] == 'ti'

: song_dict['標題

'] = song_list[1

] elif song_list[

0] == 'ar'

: song_dict[

'藝術家

'] = song_list[1

] elif song_list[

0] == 'al'

: song_dict['**

'] = song_list[1

]# 提取所有的時間戳

time_list =list(lrc_dict)

# 對時間戳進行降序排序

time_list.sort(reverse=true)

# 根據時間戳返回對應歌詞

def get_lrc_by_time(t):

for i in

time_list:

if i <=t:

return

lrc_dict[i]

return lrc_dict[time_list[-1

]]# 下面的**都是測試**

import time

import os

t = 0

last_lrc =none

while

true:

lrc =get_lrc_by_time(t)

if last_lrc !=lrc:

# 清屏

os.system(

'cls')

for s in

song_dict:

print(s, song_dict[s])

print()

last_lrc =lrc

print(lrc)

time.sleep(

0.5)

t += 0.5

JS解析提取LRC格式的歌詞

參考 ar 王菲 ti 匆匆那年 00 00.51 王菲 匆匆那年 00 01.79 作詞 林夕 00 02.61 作曲 梁翹柏 00 28.64 匆匆那年我們 00 29.92 究竟說了幾遍 00 31.55 再見之後再拖延 00 34.25 可惜誰有沒有 00 35.67 愛過不是一場 00 3...

C 中使用std regex提取lrc歌詞檔案

本文介紹使用c 11中新增的std regex而不是boost regex提取lrc歌詞檔案中的資訊。lrc檔案格式 ti 親愛的小孩 ar 蘇芮 al 親愛的小孩 by offset 0 00 00.38 親愛的小孩 蘇芮 00 01.79 詞 楊立德 00 02.80 曲 陳復明這是典型的lrc...

提取字典的子集

有時候,需要根據已知的字典物件構造乙個新的字典物件。這種場景可以使用字典生成式 dictionary comprehension 如下 prices make a dictionary of all prices over 200 p1 make a dictionary of tech stock...