python删除文件部分内容_使用Python删除文本文件中的部分内容

python删除文件部分内容_使用Python删除文本文件中的部分内容为了学习英语,我把从网上下载下来的电影转换成纯MP3文件,放到iTouch里去了,这样就可以直接练习听力了,另外把下载下来的字幕也放进去,听不懂的时候可以看,但有一个问题,网上载下来的字幕格式都如下所示:700:01:44,789>00:01:51,019片名:当幸福来敲门/追求幸福800:02:49,469>00:02:52,839马上来了Shouldbehe…

为了学习英语,我把从网上下载下来的电影转换成纯MP3文件,放到iTouch里去了,这样就可以直接练习听力了,另外把下载下来的字幕也放进去,听不懂的时候可以看,但有一个问题,网上载下来的字幕格式都如下所示:

7

00:01:44,789 –> 00:01:51,019

片名:当幸福来敲门 / 追求幸福

8

00:02:49,469 –> 00:02:52,839

马上来了

Should be here soon.

9

00:03:38,819 –> 00:03:41,189

– 我想我该列个表 – 干嘛?

-I think I should make a list. -What do mean?

10

00:03:41,189 –> 00:03:43,789

– 想要的生日礼物? – 对呀

-For your birthday gifts? -Yeah.

如上,但存在两个问题:1、每一句前面都带有数字编号;2、带有时间戳;

我只想要里面的中英文文本,数字编号和时间戳都不需要。由于最近正在学习Python当然首先就想到了做个Python脚本来把时间戳和编号删掉。实现很简单,基本思路就是使用正则表达式匹配,把空行、纯数字行及带有“–>”的行删掉,然后再先回文本文件。

完成后的代码如下:

# -*- coding: utf-8 -*-

# code=cp936

import string, 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:

#print line

if re.match(regex1, line) or re.search(regex2, line):

#print “match”, line

continue

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里,开始学习英语了!

今天的文章python删除文件部分内容_使用Python删除文本文件中的部分内容分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/25404.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注