【python】python 文本處理:刪除文件中包含關鍵詞的行、刪除指定列、替換關鍵字……


 

目錄

刪除文件中包含關鍵詞的行

刪除特定字符

1.1、刪除特定位置的字符

1.2、刪除指定字符

正則表達式

刪除csv文件中的某幾列

讀取txt文件並取其某一列數據

替換文件里的字符

刪除TXT中每一行前面的數字字符

刪除TXT中的某列

刪除TXT中的帶/不帶指定字符的行(並保留帶指定字符的行)


  1. 刪除文件中包含關鍵詞的行

帶中文

刪除匹配“月”的行

import re

lineList = []
matchPattern = re.compile(r'月')
file = open('D:\myLog.txt','r',encoding='UTF-8')  
while 1:
    line = file.readline()
    if not line:
        print("Read file End or Error")
        break
    elif matchPattern.search(line):
        pass
    else:
        lineList.append(line)
file.close()
file = open(r'D:\target.txt', 'w',encoding='UTF-8')
for i in lineList:
    file.write(i)
file.close()

---------------------------------

刪除匹配“INVALID PARAMETER”的行

import re

list = []
matchPattern = re.compile(r'INVALID PARAMETER')
file = open('C:\hopeinsighFPGA.txt','r')  
while 1:
    line = file.readline()
    if not line:
        print("Read file End or Error")
        break
    elif matchPattern.search(line):
        pass
    else:
        list.append(line)
file.close()
file = open(r'C:\target.txt', 'w')
for i in list:
    file.write(i)
file.close()



 

https://blog.csdn.net/momomi_2005/article/details/23766895

re.compile(),正則表達式在模式匹配前進行預編譯;使用預編譯代碼比字符串快;

test.txt中包含以下文字:

1:li

2:test

3:num

在運行完程序,生成的target.txt中,內容為

1:li

3:num

刪除特定字符

1.1、刪除特定位置的字符

使用.pop()方法。輸入參數,即為要刪除的索引。

刪除第二個字符

string = '公眾號:土堆碎念'
list_str = list(string)
list_str.pop(1)
list_str = ''.join(list_str)
print(list_str)

1.2、刪除指定字符

.replace()方法

 

比如,字符串a='公眾號公眾號:土堆碎念',嘗試將其中的字符刪除,將字符替換成空字符。

a= '公眾號:土堆碎念'
b = a.replace('公','')

 

count參數就可以指定要替換幾個。我們無意中知道了如何刪除指定數目的字符。

比如,字符串a='公公眾號公:土堆碎念',嘗試將其中的字符刪除,將字符替換成空字符。

a='公公眾號公:土堆碎念'
b = a.replace('公','',3)
b

Out[38]:'眾號:土堆碎念'

b = a.replace('公','',2)
b

Out[38]:'眾號:土堆碎念'

 

import re

lineList = []
file = open('D:\mylog2.txt','r',encoding='UTF-8')  
while 1:
    line = file.readline()
    if not line:        
        print("Read file End or Error")        
        break
    line2 = line.replace('篇','')
    lineList.append(line2)
    
file.close()
file = open(r'D:\target3.txt', 'w',encoding='UTF-8')
for i in lineList:
    file.write(i)
file.close()

 

正則表達式

使用re.sub()方法,這個方法的功能更強大,可以替換特定模式的字符。

sub(pattern, repl, string, count=0, flags=0)

pattern代表指定的模式,這是強大的原因,如果簡單點使用,只指定特定字符,就可以用'特定字符'來表示模式。

repl代表的是,需要替換成的字符,如果刪除,就是替換成空字符。

string代表的是,需要被替換的字符串。

count是替換的次數。

import re
a='公眾號公眾號:土堆碎念'
re.sub('公','',a)

Out[45]:'眾號眾號:土堆碎念'

 

刪除csv文件中的某幾列

import pandas as pd
df=pd.read_csv('D:\qq.csv', header=None)
df=df.drop([0,1],axis=1) #按列的位置

df=df.drop([‘colname1’,‘colname2’],axis=1) #按列名稱
df

中文

import pandas as pd
df=pd.read_csv('D:\qq.csv', header=None,encoding='gbk')
df=df.drop([0,1],axis=1)
df



讀取txt文件並取其某一列數據

菜鳥筆記1
首先讀取的txt文件如下:


AAAAF110 0003E818 0003E1FC 0003E770 0003FFFC 90
AAAAF110 0003E824 0003E208 0003E76C 0003FFFC A5
AAAAF110 0003E814 0003E204 0003E760 0003FFFC 85
AAAAF110 0003E7F0 0003E208 0003E764 0003FFFC 68
AAAAF110 0003E7CC 0003E1FC 0003E758 0003FFFC 2B

現在要讀取其每行的第3個數據,將其組成一個數組,代碼如下:

import codecs

f = codecs.open('data.txt', mode='r', encoding='utf-8')  # 打開txt文件,以‘utf-8’編碼讀取
line = f.readline()   # 以行的形式進行讀取文件
list1 = []
while line:
    a = line.split()
    b = a[2:3]   # 這是選取需要讀取的位數
    list1.append(b)  # 將其添加在列表之中
    line = f.readline()
f.close()

for i in list1:
    print(i)

輸出結果為:

['0003E1FC']
['0003E208']
['0003E204']
['0003E208']
['0003E1FC']

原文鏈接:https://blog.csdn.net/qq_38984928/article/details/82998151

 

替換文件里的字符

 

#!/bin/env python
#the source content in text.txt is "testabc"
#the destination content in text.txt is "testdef"

#open the text file and get the content
f=open("text.txt","r")
content=f.read()
print content
#replace "abc" with "def"
content=content.replace("abc","def")
print content
f.close()
#write the destination content to text.txt
f=open('text.txt','w')
f.write(content)
f.close()

刪除TXT中每一行前面的數字字符

import re
lineList = []
data = open(r'D:\mylog2.txt','r',encoding='UTF-8').readlines()
data = [re.sub('^\d+ |^\d+$', '', line.strip()) for line in data]
file = open(r'D:\target3.txt', 'w',encoding='UTF-8')  
for i in data:
    file.write('\n'+i)
file.close()
# 讀取源文件的全部內容
# 操作完成后,data是以行為單元的列表
data = open(r'D:\mylog2.txt','r',encoding='UTF-8').readlines()
# 迭代data處理每一行:去掉行首尾空白字符后正則替換行首的數字和數字后面的空格(如果有的話)
# 操作完成后,data依舊是行為單元的列表
data = [re.sub('^\d+ |^\d+$', '', line.strip()) for line in data]  
# 寫結果文件,注意:會覆蓋原始文件
with open(r'D:\mylog2.txt', 'w',encoding='UTF-8') as out:
    out.write('\n'.join(data))

刪除TXT中的某列

 

方法1:

python代碼如下:


file = open("pip list.txt", "r")  # 以只讀模式讀取文件

lines = []

for i in file:

    lines.append(i)  # 逐行將文本存入列表lines中

file.close()

new = []

for line in lines:  # 逐行遍歷

    p = 0  # 定義計數指針

    for bit in line:  # 對每行進行逐個字遍歷

        if bit == " ":  # 遇到空格時進行處理

            new.append(line[0:p])  # 將line中的0:p字段存入新列表new中,用於寫入新的.txt中

            break  # 處理完一行后跳出當前循環

        else:

            p = p + 1  # 如果bit不是空格,指針加一

 

# 以寫的方式打開文件,如果文件不存在,就會自動創建,如果存在就會覆蓋原文件

file_write_obj = open("pip list new.txt", 'w')

for var in new:

    file_write_obj.writelines(var)

    file_write_obj.writelines('\n')

file_write_obj.close()

處理前:                                                                          處理后:

               
               

https://blog.csdn.net/lccflccf/article/details/82860978

 

方法2:

txt---->df----->drop列

 

刪除TXT中的帶/不帶指定字符的行(並保留帶指定字符的行)

#!/bin/env python
import shutil, sys, os
noneed = ["null"]
need = ['{']

def isInArray (array, line):
  for item in array:
    if item in line:
      return True
  return False

fname   = r'D:\download.json'
fresult = r'D:\download2.json'
#open(fname, 'r', encoding='gb2312')
with open(fname, 'r',encoding='UTF-8') as f:
    with open(fresult, 'w', encoding='UTF-8') as g:
        for line in f.readlines():
            if isInArray(need, line):#含need里面字符的行 都要
                g.write(line)
                continue
            if not isInArray(noneed, line):#不含noneed里面字符的行 都要
                g.write(line)

 

 

 

中文:

 

Python處理txt數據實例:https://blog.csdn.net/hust_a/article/details/51944000

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM