Python刪除文件中含關鍵字的行

2021-07-07 10:29:37 字數 1502 閱讀 5066

背景:今天一同事讓我幫忙處理一下檔案裡含有----+符號的行。如圖所示:

裡面文件好幾百行,一行一行去刪除,肯定是又浪費時間,又沒效率的事情。這時候可以使用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 正則匹配得好好學

python中yield關鍵字

mylist是乙個可迭代的物件。當你使用乙個列表生成式來建立乙個列表的時候,就建立了乙個可迭代的物件 mylist x x for x in range 3 for i in mylist print i 01 4在這裡,所有的值都存在記憶體當中,所以並不適合大量資料 def creategener...

Python中關鍵字引數和命名關鍵字引數的區別

python中函式的引數有位置引數 預設引數 可變引數 命名關鍵字引數和關鍵字引數,這個順序也是定義函式時的必須順序。本文主要是講講命名關鍵字引數和關鍵字引數的區別 可變引數允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple。而關鍵字引數允許你傳入0個或任意個含引數名的引數...

python保留關鍵字和常用關鍵字

python保留關鍵字和常用關鍵字如下 上圖是python3中的關鍵字,python2.7中的關鍵字部分會有區別,具體在自己列印輸出檢視 import keyword print join keyword.kwlist lambda 用於匿名函式中 assert 斷言語句,常用與除錯 raise 用...