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.创建一个空的字典用来保存歌词数据
# 2.将字符串拆分成行
# 3.将一行数据中的 时间key 和 歌词value提去出来
# 4保存到字典中去
# 目的: 将歌词解析出来,用字典来保存, 时间作为key, 歌词作为value
# 保存歌词的字典
dictMusicText = {}
# 将字符串拆分成很多行
listLines = musicLrc.splitlines()
#遍历数据得到一行数据
for
line
in
listLines:
# print(line)
# [04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
# [04:40.75 ] [02:39.90 ] [00:36.25 ] 只是因为在人群中多看了你一眼
# 04:40.75 02:39.90 00:36.25 只是因为在人群中多看了你一眼
lineList = line.split(
"]"
)
# 歌词数据
value = lineList[-
1
]
for
i
in
range
(
len
(lineList) -
1
):
# 获得时间数据
# print(lineList[i][1:])
# 将字符串形式的时间转换成 数字型 "01:28.44" ---> 88.44秒
# 将分钟与秒拆开
timeList = lineList[i][
1
:].split(
":"
)
# 数字类型的时间
time =
float
(timeList[
0
])*
60
+
float
(timeList[
1
])
# print(time)
key = time
# 将时间和歌词保存到字典中去
dictMusicText[key] = value
# print(dictMusicText)
# 字典是无序的, key
# 将字典所有的key取出来,放在列表中然后排序
# 创建一个空列表
listKey = []
for
key
in
dictMusicText.keys():
listKey.append(key)
# 排序, 默认是升序
listKey.sort()
# print(listKey)
#可以按照时间循序打印歌词
for
key
in
listKey:
print
(
"key=%f, value = %s"
%(key,dictMusicText[key]))
# 输入任意一个时间,输出对应时间点的歌词
# 0 - 3.5 - 19.1 - 20.6....... 4.5, 20
# 让用户输入一个秒为单位的时间
setTime =
float
(
input
(
"请输入一个时间:"
))
for
i
in
range
(
len
(listKey)):
if
setTime < listKey[i]:
# 取当前时间点的上一个时间点
cKey = listKey[i-
1
]
print
(
"当前时间点的歌词是:%s"
%(dictMusicText[cKey]))
break
import
time
# 每隔1s打印出当前时间对应的歌词, 1s 2s
playTime =
0
while True
:
for
i
in
range
(
len
(listKey)):
if
playTime < listKey[i]:
# 取当前时间点的上一个时间点
cKey = listKey[i-
1
]
print
(
"playTime:%s"
%(dictMusicText[cKey]))
break
# 睡一会
playTime +=
1
time.sleep(
1
)
# 作业: 判断边界, 完善代码, 最好有自己的思路