简介:

歌词其实是一个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)对应来输出对应的歌词。

分五步:

  1. 将原始歌词按行存进列表(字符串方法splitlines())
  2. 将时间和歌词信息分开(字符串方法split(“分隔符”))
  3. 将时间转换成以秒为单位的浮点型数据(float()类型转换)
  4. 以时间为键,将其对应的歌词存进字典
  5. 利用字典指定输出

代码实现:

#对歌数据词进行操作,要求输入一个时间,输出对应时间的歌词内容#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:歌词解析相关推荐

  1. Python 歌词解析器 音乐与歌词同步播放

    python 歌词解析器 前言 歌词解析器,顾名思义就是在播放歌曲的时候,音乐播放器放到那一句就显示对应的歌词. *在 python中歌词解析器并不难写,运用 time模块来编写歌词解析器, time ...

  2. python歌词解析器

    python实现歌词解析器 今天掌握到了歌词解析器的python基础语法代码实现,个人觉得挺有意思,便展示出来分享分享 注:展示结果为每过相应的时间,输出端打印相应的歌词 import time #导 ...

  3. python 歌词解析器传奇 歌词音乐同时输出

    ''' 歌词解析器:把歌词按照时间节点进行显示. 1.把歌词进行解析切片处理,把时间转成对应的浮点数 2.使用字典将时间与歌词进行存储{时间:歌词} 3.循环自动打印歌词[结束循环的条件,key为No ...

  4. 学习笔记——Day1——Python歌词解析

    具体思路 1.提取歌词的文本文件 2.将文件中的时间点提取出来,并将歌词分成多个字符串保存下来--构成字典,其中时间为关键字key.歌词为value. 3.形成字典后就可以利用其中的关系进行运用 可以 ...

  5. python 歌词解析

    lrc_str = """[00:01.70]蓝莲花 [00:00.70]演唱:许巍 [00:00.00] [00:00.70]没有什么能够阻挡 [00:06.01]你对 ...

  6. Python歌词解析器(加音频播放)

    import pygame import timestrLrc = '''[00:01.49]动力火车 - 当 [00:20.53]当 <还珠格格>主题曲(动力火车) [00:21.89] ...

  7. python歌词解析_python 将歌词解析封装成类,要求:提供一个方法(根据时间返回歌-站长资讯中心...

    自己写的感觉 有更好方案的大佬可以说一下 import bisect class Lrc(): def __init__(self, sec, lrc): self.sec = sec self.lr ...

  8. Python中歌词解析

    分析: 1.对于歌词解析这个事情,本质上就是对字符串进行切片. 2.首先要讲时间与歌词分开 3.将时间的24时格式转为数字形式,作为字典的key,而歌词作为字典的value 可以直接使用:dict[k ...

  9. 了解女友的心还不如了解Python之在Python中解析和修改XML

    2021年12月15日 10:14 ·  阅读 30 摘要: 工作中我们时常需要解析用不同语言编写的数据.Python 提供了许多库来解析或拆分用其他语言编写的数据.在这篇 Python XML 解析 ...

  10. python列表解析的新方法

    python 列表解析我感觉是python非常灵活的一个地方,一开始接触它的时候,特别是之前学过其它的语言, 你会感觉很不习惯,怎么看怎么不对劲,老是觉的哪个地方怪怪的,这就是列表解析的魔力所在. p ...

最新文章

  1. 土壤生物多样性与生物化学过程研讨会(6.20-23合肥)
  2. Facebook发布AR眼镜研究项目Project Aria
  3. DB time抖动的原因分析
  4. java修改cookie的值_Java 对 Cookie增删改查的实现示例
  5. c语言复制的代码不能运行,刚学C语言,在Linux下写的代码能正常编译,复制到VC下就无法运行...
  6. Python爬虫扩展库BeautifulSoup4用法精要
  7. 14.go build
  8. Servlet教程第5讲笔记
  9. CEF3中js调用delphi内部方法
  10. 电容或电感的电压_如何通俗的理解电流,电压,电阻,电容和电感?
  11. error: warning: Stopped in a context claiming to capture an Objective-C object pointer,
  12. 苹果html 闪退,iPhone6 App闪退的解决办法 掌握这4点苹果App不再闪退
  13. c#语言中文编程下载,C#编程自学软件
  14. layui日期插件用法
  15. AcWing 723. PUM
  16. windows硬盘数据安全处理工具
  17. 计算机显示器未响应,电脑开机显示器没反应的故障排除方法
  18. 为RMI实现类Jini的发现机制
  19. vue-router3路由配置一 路由搭建
  20. 搭建quick-cocos2dx调试环境出错

热门文章

  1. 正则验证,验证网站URL正则验证
  2. BeautifulSoup的soup.find_all()与 soup.select()赏析
  3. 一招搞定微软验证蓝色五角星。并通过微软正版验证计划!
  4. 希捷 混合硬盘 装linux,实际应用测试全文总结
  5. MD5加密算法详细分析_C实现
  6. WPF让自定义控件不显示到工具箱
  7. 2019计算机考研百度云,2019计算机考研复习时间表(全年版)
  8. 阿里巴巴代码bug扫描插件
  9. 大面积无线WIFI覆盖 H3C WX3010E(AC+PoE三层交换机)+ H3C WA2620E、WA4320无线AP +华为USG6310S防火墙
  10. APT安装MySQL NDB Cluster