首先我是初學者,沒有找到類似於linux sed替換或者刪除一行命令的方法,主要邏輯是讀取文件,清空文件,將修改之后的內容再寫進去。這種方法問題很多,例如同時操作文件或者文件過大。這只是一種方法。
全文刪除:
[admin@pe-jira python]$ cat ming.txt
9:999:999
1:22222:222
3:33333:222
0:999:999
>>> f = open('ming.txt','r')
>>> a = f.readlines()
>>> f = open('ming.txt','w')
>>> for i in a:
... f.write(i.replace("22",""))
...
10
6
10
10
>>> f.close()
[admin@pe-jira python]$ cat ming.txt
9:999:999
1:2:2
3:33333:2
0:999:999
[admin@pe-jira python]$
刪除匹配開頭行
[admin@pe-jira python]$ cat ming.txt
9:999:999
1:2:2
3:33333:2
0:999:999
>>> f = open('ming.txt','r')
>>> a = f.readlines()
>>> f = open('ming.txt','w')
>>> for i in a:
... if i.startswith('9'):
... pass
... else:
... f.write(i)
...
6
10
10
>>> f.close()
>>>
[admin@pe-jira python]$ cat ming.txt
1:2:2
3:33333:2
0:999:999
[admin@pe-jira python]$
re正則全文刪除
[admin@pe-jira python]$ cat ming.txt
9:999:9998
3:33333:2
0:999:99999
>>> import re
>>> s = re.sub(r"999",'',a)
>>> s
'9::\n3:33333:2\n0::\n'
>>> f = open('ming.txt','w')
>>> f.write(s)
18
>>> f.close()
>>> import re
>>> f = open('ming.txt','r')
>>> a = f.read()
>>> s = re.sub(r"999",'',a)
>>> f = open('ming.txt','w')
>>> f.write(s)
21
>>> f.close()
>>>
[admin@pe-jira python]$ cat ming.txt
9::8
3:33333:2
0::99
[admin@pe-jira python]$
re正則只刪除第一個匹配的
[admin@pe-jira python]$ cat ming.txt
9:999:9998
3:33333:2
0:999:99999
>>> import re
>>> f = open('ming.txt','r')
>>> a = f.read()
>>> s = re.sub(r"999",'',a,1)
>>> s
'9::9998\n3:33333:2\n0:999:99999\n'
>>> f = open('ming.txt','w')
>>> f.write(s)
30
>>> f.close()
>>>
[admin@pe-jira python]$ cat ming.txt
9::9998
3:33333:2
0:999:99999
[admin@pe-jira python]$
