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.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 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 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 in range(len(listKey)):
        if playTime  < listKey[i]:
        #        取当前时间点的上一个时间点
                cKey = listKey[i-1]
                print("playTime:%s"%(dictMusicText[cKey]))
                break
#   睡一会
    playTime += 1
    time.sleep(1)
# 作业: 判断边界, 完善代码, 最好有自己的思路
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值