当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : lrc歌词格式转化为txt格式
帖子发表于 : 2011-04-29 18:19 
头像

注册: 2011-04-25 9:46
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
因为有时候要贴歌词,而手头又只要lrc的文件,lrc文件中的每一句歌词前面都有时间点,我想把每一句前面的时间点去掉

因为之前没接触过python

大概思路应该不难,读取lrc文件后通过正则表达式将每一句前面的时间点去掉,然后再写入另外的文件

首先,我不去掉时间点看看是不是会出错。代码如下:
代码:
infile = open("1111.lrc","r")
file_content = infile.read();
infile.seek(0);
file_content_list = infile.readlines();
outfile = open("2222.txt","w")
file_content_list = [line+'\n' for line in file_content_list]
outfile.writelines(file_content_list)

outfile.close()
infile.close()


这样完了以后2222.txt文件会出现乱码

由于扩展名.lrc无法上传,我就把后缀名改成了.txt的上传了


附件:
文件注释: 歌词文件
1111.txt [1.09 KiB]
被下载 52 次
页首
 用户资料  
 
2 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-04-29 18:26 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
难道不是sed正则处理的事情。


_________________
● 鸣学


页首
 用户资料  
 
3 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-04-29 21:01 
头像

注册: 2009-04-11 23:46
帖子: 4131
系统: Arch Linux
送出感谢: 11
接收感谢: 124
我这里试过,没有乱码,只是每两行之间多了个换行。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
4 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-04-30 16:23 
头像

注册: 2008-03-23 0:39
帖子: 770
送出感谢: 0 次
接收感谢: 4
eexpress 写道:
难道不是sed正则处理的事情。

这明显就是perl该干的事情 :em11
引用:
$ cat a-bak
[ti:一生有你(MIX)]
[ar:水木年华]
[al:跳舞专辑]
[by:jinshukuangren]
[00:13.27]一生有你(MIX)
[00:23.27]作词:卢庚戌
[00:33.27]作曲:卢庚戌
[00:43.27]MIX:王志
[00:53.27]主唱:卢庚戌
[01:03.27]专辑:跳舞专辑
[01:13.27]LRC制作:jinshukuangren
[01:23.27]
[01:34.01]因为梦见你离开
[01:37.57]我从哭泣中醒来

保存成a.lrc
代码:
$ perl -i-bak -pne 'if(/\[[^\d]/){s/^\[//;s/\]$//;}else{s/^\[[^\]]+]//}' a.lrc

代码:
$ cat a.lrc
ti:一生有你(MIX)
ar:水木年华
al:跳舞专辑
by:jinshukuangren
一生有你(MIX)
作词:卢庚戌
作曲:卢庚戌
MIX:王志
主唱:卢庚戌
专辑:跳舞专辑
LRC制作:jinshukuangren

因为梦见你离开
我从哭泣中醒来

看就一句话.顺便说一下.这样是有悲愤的.有个-bak文件.是原文件备份的.如果你不要去掉-i-bak.或者处理完以后.觉得没问题.用find删除好了
用什么语言做啥事情. :em09


页首
 用户资料  
 
5 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 11:27 
头像

注册: 2011-04-25 9:46
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
我这里试过,没有乱码,只是每两行之间多了个换行。


后来我用gedit再打开转换后的文件,确实没有乱码,我想可能是vim编码设置的问题
打开vim的配置文件
代码:
vi /home/.vimrc


然后增加如下配置
代码:
set fileencodings=utf-8,gbk,ucs-bom,cp936


再次打开转换后的文件,问题解决


页首
 用户资料  
 
6 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 11:28 
头像

注册: 2011-04-25 9:46
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
ChenFengyuan 写道:
eexpress 写道:
难道不是sed正则处理的事情。

这明显就是perl该干的事情 :em11
引用:
$ cat a-bak
[ti:一生有你(MIX)]
[ar:水木年华]
[al:跳舞专辑]
[by:jinshukuangren]
[00:13.27]一生有你(MIX)
[00:23.27]作词:卢庚戌
[00:33.27]作曲:卢庚戌
[00:43.27]MIX:王志
[00:53.27]主唱:卢庚戌
[01:03.27]专辑:跳舞专辑
[01:13.27]LRC制作:jinshukuangren
[01:23.27]
[01:34.01]因为梦见你离开
[01:37.57]我从哭泣中醒来

保存成a.lrc
代码:
$ perl -i-bak -pne 'if(/\[[^\d]/){s/^\[//;s/\]$//;}else{s/^\[[^\]]+]//}' a.lrc

代码:
$ cat a.lrc
ti:一生有你(MIX)
ar:水木年华
al:跳舞专辑
by:jinshukuangren
一生有你(MIX)
作词:卢庚戌
作曲:卢庚戌
MIX:王志
主唱:卢庚戌
专辑:跳舞专辑
LRC制作:jinshukuangren

因为梦见你离开
我从哭泣中醒来

看就一句话.顺便说一下.这样是有悲愤的.有个-bak文件.是原文件备份的.如果你不要去掉-i-bak.或者处理完以后.觉得没问题.用find删除好了
用什么语言做啥事情. :em09



多谢提供perl的方法,呵呵。还没有学过perl


页首
 用户资料  
 
7 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 13:01 
头像

注册: 2009-04-11 23:46
帖子: 4131
系统: Arch Linux
送出感谢: 11
接收感谢: 124
sanjinxiong 写道:
然后增加如下配置
代码:
set fileencodings=utf-8,gbk,ucs-bom,cp936


再次打开转换后的文件,问题解决


ucs-bom 应该放第一,gbk 和 cp936 基本等同。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
8 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 13:14 
头像

注册: 2010-09-13 19:04
帖子: 1404
地址: 0xFF00EE
送出感谢: 1
接收感谢: 3
怎么没有人用sed,他才是干这个的


_________________
qq旋风离线空间下载程序
漂亮的fcitx皮肤
Fcitx皮肤合集


页首
 用户资料  
 
9 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 13:24 
头像

注册: 2010-09-13 19:04
帖子: 1404
地址: 0xFF00EE
送出感谢: 1
接收感谢: 3
代码:
sed 's/\[[0-9].*\]//' file.lrc


_________________
qq旋风离线空间下载程序
漂亮的fcitx皮肤
Fcitx皮肤合集


页首
 用户资料  
 
10 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 13:25 
头像

注册: 2009-04-11 23:46
帖子: 4131
系统: Arch Linux
送出感谢: 11
接收感谢: 124
acer4740 写道:
怎么没有人用sed,他才是干这个的

eexpress 很早就说了呀


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
11 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 14:14 
头像

注册: 2009-10-16 22:46
帖子: 18958
地址: finland
送出感谢: 28
接收感谢: 48
膜拜大神们


_________________
>>>>推Ubuntu 桌面培训~~<<<<
>>>>想加入/了解gimp汉化吗,点我吧~<<<<
——————————————————————
不推荐wubi,也不推荐你给别人推荐wubi…………
随心而为的感觉真好……
强推mayhem!!
强推ensiferum


页首
 用户资料  
 
12 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 15:38 
头像

注册: 2011-04-25 9:46
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
lilydjwg 写道:
sanjinxiong 写道:
然后增加如下配置
代码:
set fileencodings=utf-8,gbk,ucs-bom,cp936


再次打开转换后的文件,问题解决


ucs-bom 应该放第一,gbk 和 cp936 基本等同。


为什么捏,多谢提醒哈


页首
 用户资料  
 
13 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 15:40 
头像

注册: 2011-04-25 9:46
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
acer4740 写道:
代码:
sed 's/\[[0-9].*\]//' file.lrc


sed还没学过呢,不过谢谢你写出sed的方法


页首
 用户资料  
 
14 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 16:17 
头像

注册: 2011-04-25 9:46
帖子: 39
送出感谢: 0 次
接收感谢: 0 次
用python搞出来了,其实挺简单的。
我的代码如下:
如果有更好的方法,还请别吝啬贴出来哈

代码:
import re

infile = open("1111.txt")
file_content = infile.read()
infile.seek(0)

file_content_list = infile.readlines()

outfile = open("2222.txt","w")

for line in file_content_list:
    reobj = re.compile(r"\[\d\d+:\d\d\.\d\d\]")
    line = reobj.sub("",line)
    outfile.write(line)

infile.close()
outfile.close()


转换前后见附件


附件:
文件注释: 转换后结果
2222.txt [738 Bytes]
被下载 34 次
文件注释: lrc歌词
1111.txt [1.09 KiB]
被下载 22 次
页首
 用户资料  
 
15 楼 
 文章标题 : Re: lrc歌词格式转化为txt格式
帖子发表于 : 2011-05-03 17:20 
头像

注册: 2009-04-11 23:46
帖子: 4131
系统: Arch Linux
送出感谢: 11
接收感谢: 124
sanjinxiong 写道:
用python搞出来了,其实挺简单的。
我的代码如下:
如果有更好的方法,还请别吝啬贴出来哈


[python]
with open("1111.txt") as infile, open("2222.txt","w") as outfile:
for line in infile:
end = line.rfind(']')
if end == len(line)-1: #跳过空行
continue
outfile.write(line[end:])
[/python]

不过可能只有 Python 3 支持 with 后接多个 as 子句。只针对所有符合我自己的期望的 LRC 格式。


_________________
我的博客 https://blog.lilydjwg.me/
提问的智慧
Arch Linux 中文论坛

我的vimrc: https://git.io/vimrc


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译