背景:今天一同事让我帮忙处理一下文件里含有----+符号的行。如图所示:
里面文档好几百行,一行一行去删除,肯定是又浪费时间,又没效率的事情。这时候可以使用Python脚本去处理!
一 设计思路
其实这个很有规律的,它的开头是以“—”开头,先使用readlines方法读取每一行,然后每一行进行正则匹配,匹配成功的行就直接删除!
二 程序代码
#coding:utf-8
import re
import sys
import os
f=open('ticonf.old.txt','r+')
line=f.readlines()
f1=open('new.txt','w+')
f2=open('ticonf.det.txt','w')
print "Now I will to delete ---+"
try:
for i in range(0,len(line)):
if re.match(r'^\-',line[i]):
del line[i]
print "delete line",i
else:
print "Writing",i
f1.write(line[i])
except IndexError:
print "pass"
line1=f1.readline()
flag=0
try:
for i in range(0,len(line1)):
if re.match(r'^ACC_NUM',line[i]):
flag+=1
if flag>3:
del line[i]
else:
continue
else:
f2.write(line[i])
except IndexError:
print "pass"
print flag
print "delete new.txt"
try:
os.remove( 'new.txt' )
except WindowsError:
pass
f.close()
f2.close()
print "finish to delete ---+"
三 程序结果
四 总结和感悟
问题1 之前使用的是readline的但是读取的行数总是错误,原因是readline返回一行的字符串, readlines返回包含文件所有内容的字符串列表, 每个元素是一行的字符串,
问题2 之前想得出的结果直接在原来的文本上修改,但是程序运行成功,文本内容却没有变化,查了一下才知道修改后的文档都存在line里面,因为他是一个数组,所以才写了个文档保存到里面去
问题3 运行的时候总是报范围错误,于是就用try...except函数把错误过滤掉。
问题4 正则匹配得好好学