使用Python刪除文字檔中的部分內容

來源:互聯網
上載者:User

為了學習英語,我把從網上下載下來的電影轉換成純MP3檔案,放到iTouch裡去了,這樣就可以直接練習聽力了,另外把下載下來的字幕也放進去,聽不懂的時候可以看,但有一個問題,網上傳下來的字幕格式都如下所示:

 7<br />00:01:44,789 --> 00:01:51,019<br />片名:當幸福來敲門 / 追求幸福</p><p>8<br />00:02:49,469 --> 00:02:52,839<br />馬上來了<br />Should be here soon.</p><p>9<br />00:03:38,819 --> 00:03:41,189<br />- 我想我該列個表 - 幹嘛?<br />-I think I should make a list. -What do mean?</p><p>10<br />00:03:41,189 --> 00:03:43,789<br />- 想要的生日禮物? - 對呀<br />-For your birthday gifts? -Yeah.

如上,但存在兩個問題:1、每一句前面都帶有數字編號;2、帶有時間戳記;

 

我只想要裡面的中英文文本,數字編號和時間戳記都不需要。由於最近正在學習Python當然首先就想到了做個Python指令碼來把時間戳記和編號刪掉。實現很簡單,基本思路就是使用Regex匹配,把空行、純數字行及帶有“-->”的行刪掉,然後再先迴文本檔案。

 

完成後的代碼如下:

# -*- coding: utf-8 -*-</p><p># code=cp936<br />import string, re</p><p>title_txt = open('I://pursuit_for_happiness(ch).txt', 'r+')<br />try:<br /> full_txt = title_txt.readlines()<br /> regex1 = "/A/d*[/n]/Z"<br /> regex2 = "/d --> /d"<br /> #print full_txt<br /> new_txt = []<br /> for line in full_txt:<br /> #print line<br /> if re.match(regex1, line) or re.search(regex2, line):<br /> #print "match", line<br /> continue<br /> else:<br /> new_txt.append(line)</p><p> title_txt.seek(0)<br /> title_txt.truncate(0)<br /> #for line in full_txt:<br /> # title_txt.writelines(line)<br /> title_txt.writelines(new_txt)</p><p>finally:<br /> title_txt.close()</p><p>print "Over"

 

過程中遇到一個問題:

1、Python中沒辦法清空一個檔案,亂看了一通,發現使用truncate()方法,傳入參數為0時可以搞定。

2、開始的時候直接使用for遍曆list中的元素,匹配到就刪除,發現需要執行多次指令碼才能刪完,且有些還始終刪不掉,最後終於搞明白了:使用for i in list:時,如果一匹配到就刪除,則此時list中的元素會改變,進入迴圈的下一輪時不出問題才怪。造孽,花了近一個小時才把這個問題搞定了。於是重新定義了一個空鏈表new_txt,使用它來儲存我要的字幕,迴圈完成後把new_txt寫迴文件。大功告成!

 

爽,拷到我的iTouch裡,開始學習英語了!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.