Python:歌词解析
简介:
歌词其实是一个LRC文件,里面存放了所有的歌词。LRC歌词制作实质上是把歌词或文字,与歌曲或语音建立起一种时间对应关系。
类似于:
[00:03.50]传奇
[00:19.10]作词:刘兵 作曲:李健
[00:20.60]演唱:王菲
[00:26.60]
[04:40.75][02:39.90][00:36.25]只是因为在人群中多看了你一眼
[04:49.00]
……
题目:
写程序,要求输入一个秒数(可能有小数) ,输出该时间所对应的歌词。
比如输入 37 那么就输出:只是因为在人群中多看了你一眼
比如160 那么也应该输出:只是因为在人群中多看了你一眼
思路:
将歌词和时间存进字典,通过键(key)值(value)对应来输出对应的歌词。
分五步:
- 将原始歌词按行存进列表(字符串方法splitlines())
- 将时间和歌词信息分开(字符串方法split(“分隔符”))
- 将时间转换成以秒为单位的浮点型数据(float()类型转换)
- 以时间为键,将其对应的歌词存进字典
- 利用字典指定输出
代码实现:
#对歌数据词进行操作,要求输入一个时间,输出对应时间的歌词内容#1、将原始歌词按行存进列表
#2、将时间和歌词信息分开
#3、将时间转换成以秒为单位的浮点型数据
#4、以时间为键,将其对应的歌词存进字典
#5、利用字典指定输出musicLrcDict = {} #用于存储时间和歌词的字典musicLrcStr = """[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]我一直在你身旁 从未走远
"""
#将原始数据按行存储进列表
musicLrcList = musicLrcStr.splitlines()
#分开时间和歌词
for lrcLine in musicLrcList:lrcLineList = lrcLine.split("]") #以“]”为分隔进行切割for n in range(len(lrcLineList) - 1):timeStr = lrcLineList[n][1:] #从下标为一的元素开始取,即弃掉首元素“[”timeList = timeStr.split(":") #将每个时间的分和秒分开timeS = float(timeList[0]) * 60 + float(timeList[1]) #将时间转化成秒musicLrcDict[timeS] = lrcLineList[-1] #字典赋值,下标为“-1”表示最后一个元素
print(musicLrcDict)allTimeList = [] #存储所有时间,用于排序
for t in musicLrcDict: #访问字典的键allTimeList.append(t) #append():在末尾添加元素
allTimeList.sort() #升序排序并返回排序后的列表
#接收时间并输出相应歌词
while 1:getTime = float(input("输入一个时间:"))for i in range(len(allTimeList)):if getTime < allTimeList[i]:breakif getTime < allTimeList[0]:print("时间太小了,什么也没有……")else:print(musicLrcDict[allTimeList[i - 1]])
运行结果:
知识点:
1、多行定义字符串时,"""符号所在行如果没有字符串,若按行存储进列表,则视第一行为空,但是存在。
异常:
正常:
2、字符串方法 str.count(“字符”) 用于计算字符串str中指定字符出现的次数。
3、字符串**str[1:]**表示从字符串下标为1的元素(即第2个元素)开始取,弃掉首元素;
同理,**str[:1]**表示从字符串下标为0的元素开始取,取到下标为1的元素,弃掉其余元素。
4、可以直接用“for tmp in list” 来遍历列表list里的所有元素。
**
- 题目练习,借助于网课指导,如有问题还请指出。
**
Python:歌词解析相关推荐
- Python 歌词解析器 音乐与歌词同步播放
python 歌词解析器 前言 歌词解析器,顾名思义就是在播放歌曲的时候,音乐播放器放到那一句就显示对应的歌词. *在 python中歌词解析器并不难写,运用 time模块来编写歌词解析器, time ...
- python歌词解析器
python实现歌词解析器 今天掌握到了歌词解析器的python基础语法代码实现,个人觉得挺有意思,便展示出来分享分享 注:展示结果为每过相应的时间,输出端打印相应的歌词 import time #导 ...
- python 歌词解析器传奇 歌词音乐同时输出
''' 歌词解析器:把歌词按照时间节点进行显示. 1.把歌词进行解析切片处理,把时间转成对应的浮点数 2.使用字典将时间与歌词进行存储{时间:歌词} 3.循环自动打印歌词[结束循环的条件,key为No ...
- 学习笔记——Day1——Python歌词解析
具体思路 1.提取歌词的文本文件 2.将文件中的时间点提取出来,并将歌词分成多个字符串保存下来--构成字典,其中时间为关键字key.歌词为value. 3.形成字典后就可以利用其中的关系进行运用 可以 ...
- python 歌词解析
lrc_str = """[00:01.70]蓝莲花 [00:00.70]演唱:许巍 [00:00.00] [00:00.70]没有什么能够阻挡 [00:06.01]你对 ...
- Python歌词解析器(加音频播放)
import pygame import timestrLrc = '''[00:01.49]动力火车 - 当 [00:20.53]当 <还珠格格>主题曲(动力火车) [00:21.89] ...
- python歌词解析_python 将歌词解析封装成类,要求:提供一个方法(根据时间返回歌-站长资讯中心...
自己写的感觉 有更好方案的大佬可以说一下 import bisect class Lrc(): def __init__(self, sec, lrc): self.sec = sec self.lr ...
- Python中歌词解析
分析: 1.对于歌词解析这个事情,本质上就是对字符串进行切片. 2.首先要讲时间与歌词分开 3.将时间的24时格式转为数字形式,作为字典的key,而歌词作为字典的value 可以直接使用:dict[k ...
- 了解女友的心还不如了解Python之在Python中解析和修改XML
2021年12月15日 10:14 · 阅读 30 摘要: 工作中我们时常需要解析用不同语言编写的数据.Python 提供了许多库来解析或拆分用其他语言编写的数据.在这篇 Python XML 解析 ...
- python列表解析的新方法
python 列表解析我感觉是python非常灵活的一个地方,一开始接触它的时候,特别是之前学过其它的语言, 你会感觉很不习惯,怎么看怎么不对劲,老是觉的哪个地方怪怪的,这就是列表解析的魔力所在. p ...
最新文章
- 土壤生物多样性与生物化学过程研讨会(6.20-23合肥)
- Facebook发布AR眼镜研究项目Project Aria
- DB time抖动的原因分析
- java修改cookie的值_Java 对 Cookie增删改查的实现示例
- c语言复制的代码不能运行,刚学C语言,在Linux下写的代码能正常编译,复制到VC下就无法运行...
- Python爬虫扩展库BeautifulSoup4用法精要
- 14.go build
- Servlet教程第5讲笔记
- CEF3中js调用delphi内部方法
- 电容或电感的电压_如何通俗的理解电流,电压,电阻,电容和电感?
- error: warning: Stopped in a context claiming to capture an Objective-C object pointer,
- 苹果html 闪退,iPhone6 App闪退的解决办法 掌握这4点苹果App不再闪退
- c#语言中文编程下载,C#编程自学软件
- layui日期插件用法
- AcWing 723. PUM
- windows硬盘数据安全处理工具
- 计算机显示器未响应,电脑开机显示器没反应的故障排除方法
- 为RMI实现类Jini的发现机制
- vue-router3路由配置一 路由搭建
- 搭建quick-cocos2dx调试环境出错
热门文章
- 正则验证,验证网站URL正则验证
- BeautifulSoup的soup.find_all()与 soup.select()赏析
- 一招搞定微软验证蓝色五角星。并通过微软正版验证计划!
- 希捷 混合硬盘 装linux,实际应用测试全文总结
- MD5加密算法详细分析_C实现
- WPF让自定义控件不显示到工具箱
- 2019计算机考研百度云,2019计算机考研复习时间表(全年版)
- 阿里巴巴代码bug扫描插件
- 大面积无线WIFI覆盖 H3C WX3010E(AC+PoE三层交换机)+ H3C WA2620E、WA4320无线AP +华为USG6310S防火墙
- APT安装MySQL NDB Cluster