为了学习英语,我把从网上下载的电影转换成了纯MP3文件,放入了iTouch。 这样就可以直接练习听力了。 另外,还加入下载的字幕,听不懂的时候就可以看。 但是,有一个问题。 网上下载的字幕格式如下。
7
0:01336044,789---- 00336001336051,019
片名:幸福了就敲门/追求幸福
8
0:02336049,469---- 00336002336052,839
马上就来了
Should be here soon。
9
0:0:38,819---- 0033600336041,189
我觉得应该列个清单-你在干什么?
- ithinkishouldmakealist.- whatdomean?
10
0:0:41,189---- 0033600336043,789
你想要生日礼物吗? -是啊
-For your birthday gifts? -Yeah
如上所述,有两个问题。 1、每句前面都有数字编号。 2、带时间戳
我只想要中英文的课文。 不需要数字号码也不需要时间戳。 因为最近在学习Python,所以当然考虑先编写Python脚本,删除时间戳和号码。 实现简单,基本思想是使用正则表达式匹配删除空行、纯数字行和带“--”的行,并将其放回文本文件中。
完成的代码如下。
#-* -编码: utf-8-* -
#代码=CP 936
导入字符串,re
title _ txt=open (I ://pursuit _ for _ happiness (ch ).txt ),r ) )
try:
full_txt=title_txt.readlines (
regex1='/A/d*[/n]/Z '
regex2='/d -- /d '
#print full_txt
new_txt=[]
for line in full_txt:
#打印行
ifre.match(regex1,line ) orre.search (regex 2,line ) :
#打印'匹配',line
连续
else:
new_txt.append(line )
title_txt.seek(0) )。
title_txt.truncate(0) )。
#for line in full_txt:
#title_txt.writelines(line ) )。
title_txt.writelines(new_txt )
finally:
title_txt.close (
print 'Over '
进程中出现问题:
1、Python不能清空文件,粗略一看,发现使用truncate ()方法可以在输入参数为0时进行处理。
2、一开始直接用for查询list中的元素,发现匹配后删除,必须多次运行脚本才能删除,而且有些很难删除,最后才知道。 使用for i in list:时,如果一致则删除,此时list中的要素会发生变化。 难怪在进入循环的下一轮时没有问题。 造罪,解决这个问题花了将近一个小时。 因此,重新定义空链表new_txt,用它保存我想要的字幕,循环完成后将new_txt写回文件。 大功告成!
清爽,复制到我的iTouch上,开始学习英语了!