欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【python】python 文本处理:删除文件中包含关键词的行、删除指定列、替换关键字……...

程序员文章站 2022-07-15 16:09:43
...

目录

删除文件中包含关键词的行

删除特定字符

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()

处理前:                                                                          处理后:

               

【python】python 文本处理:删除文件中包含关键词的行、删除指定列、替换关键字……...               
【python】python 文本处理:删除文件中包含关键词的行、删除指定列、替换关键字……...

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