当前位置: 首页 > article >正文

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

目录

1、行处理

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

删除TXT中的带/不带指定字符的行(并保留带指定字符的行)

        删除匹配or不匹配某些条件的行

2、字符处理

删除特定字符

1.1、删除特定位置的字符

1.2、删除指定字符

1.3、删除每一行首/尾匹配条件的字符

正则表达式

替换文件里的字符

3、列处理

删除TXT中每一行前面的数字字符

删除csv文件中的某几列

读取txt文件并取其某一列数据

删除TXT中的某列

读取TXT中的列到excel中

 将数字大小在9.500到12.500之间的行保留

4、报错记录


1、行处理

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

带中文

删除匹配“月”的行

import relineList = []
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")breakelif matchPattern.search(line):passelse: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 relist = []
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")breakelif matchPattern.search(line):passelse:list.append(line)
file.close()
file = open(r'C:\target.txt', 'w')
for i in list:file.write(i)
file.close()

python:删除文件中包含关键词的行_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

删除TXT中的带/不带指定字符的行(并保留带指定字符的行)

#!/bin/env python
import shutil, sys, os
noneed = ["null"]
need = ['{']def isInArray (array, line):for item in array:if item in line:return Truereturn Falsefname   = 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)continueif not isInArray(noneed, line):#不含noneed里面字符的行 都要g.write(line)

删除匹配or不匹配某些条件的行

程序框架:

f = open("test.txt",'r+')
lines = [line for line in f.readlines() if 你对line的判断 is None]
f.seek(0)
f.truncate(0)
f.writelines(lines)
f.close()

示例:

删除包含有 darray 内的内容的行

#!/bin/env python
import shutil, sys, os
darray = ["Entering directory","In function ","Leaving directory","__NR_SYSCALL_BASE","arm-hisiv100-linux-ar ","arm-hisiv100-linux-gcc ","but argument is of type","dereferencing type-punned pointer will break strict-aliasing rules","differ in signedness","does break strict-aliasing rules","embedded '\\0' in format","excess elements in array initializer","implicit declaration of","make -C "," rm -f","this is the location of the previous definition","warning: multi-line comment"
]def isInArray (array, line):for item in array:if item in line:return Truereturn Falsefname   = r'C:\Users\YOGA\Desktop\download.json'
fresult = r'C:\Users\YOGA\Desktop\download2.json'with open(fname, 'r', encoding='UTF-8') as f:with open(fresult, 'w', encoding='UTF-8') as g:for line in f.readlines():if not isInArray(darray, line):g.write(line)
Python实现删除文件中含“指定内容”的行示例
#!/bin/env python
import shutil, sys, os
darray = ["null",
]
def isInArray (array, line):for item in array:if item in line:return Truereturn False
if __name__ == '__main__':argv = sys.argvargc = len(argv)if argc < 2:print("Usage: %s <file>" %(os.path.basename(argv[0])))exit()fname = argv[1]fresult = fname + ".result"
with open(fname, 'r', encoding='UTF-8') as f:with open(fresult, 'w', encoding='UTF-8') as g:for line in f.readlines():if not isInArray(darray, line):g.write(line)

原文:https://www.jb51.net/article/115779.htm

2、字符处理

删除特定字符

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 relineList = []
file = open('D:\mylog2.txt','r',encoding='UTF-8')  
while 1:line = file.readline()if not line:        print("Read file End or Error")        breakline2 = 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()

1.3、删除每一行首/尾匹配条件的字符

path = r'D:\code.txt'
f = open(path,'r')
a = f.readlines()
f = open(path,'w')for line_b in a:line_a = line_b.lstrip('0123456789')f.write(line_a)f.close()

strip() 去除每行首和尾 匹配 括号中 字符列表内的某个字符的字符

lstrip() 去除每行首(左边)匹配 括号中 字符列表内的某个字符的字符

Python strip()方法 | http://www.runoob.com/python/att-string-strip.html

正则表达式

使用re.sub()方法,这个方法的功能更强大,可以替换特定模式的字符。

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

pattern代表指定的模式,这是强大的原因,如果简单点使用,只指定特定字符,就可以用'特定字符'来表示模式。

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

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

count是替换的次数。

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

Out[45]:'众号众号:土堆碎念'

替换文件里的字符

#!/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()

3、列处理

删除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))

删除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 codecsf = 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

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

处理前:                                                                          处理后:

                              

删除.txt每行中的不必要字符 https://blog.csdn.net/lccflccf/article/details/82860978

方法2:

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

读取TXT中的列到excel中

Python处理txt数据实例:Python处理txt数据实例_https://blog.csdn.net/hust_a/article/details/51944000

 将数字大小在9.500到12.500之间的行保留


将数据内数字大小在9.500到12.500之间的行保留,
将数据内数字小于9.500和大于12.500的行删除,

def chuli(infile,outfile):fp = open(infile,'r')fout = open(outfile,'w')for line in fp.readlines():line = line.strip()if not line:continuenum1 = float(line.split(' ')[1].split(',')[0])num2 = float(line.split(' ')[2])if (num1>=9.5 and num1<=12.5) and (num2>=9.5 and num2 <=12.5):fout.write('%s\n' % line)fp.close()fout.close()
if __name__ == '__main__':infile = './111.txt'outfile = './222.txt'chuli(infile,outfile)

更多:python命令删除文本文档中含有特定字符的行https://ask.csdn.net/questions/682249 

4、报错记录

 注意编码不一致时常见报错:https://www.cnblogs.com/mengyu/p/6638975.html

解决办法:

解决办法1.FILE_OBJECT= open('order.log','r', encoding='UTF-8')
解决办法2.FILE_OBJECT= open('order.log','rb')

作者:半岛鱼@UESTC持续更新,连接:https://blog.csdn.net/bandaoyu/article/details/84990513

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dgrt.cn/a/58375.html

如若内容造成侵权/违法违规/事实不符,请联系我爱学习网进行投诉反馈,一经查实,立即删除!

相关文章:

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

目录 1、行处理 删除文件中包含关键词的行 删除TXT中的带/不带指定字符的行(并保留带指定字符的行) 删除匹配or不匹配某些条件的行 2、字符处理 删除特定字符 1.1、删除特定位置的字符 1.2、删除指定字符 1.3、删除每一行首/尾匹配条件的字符 正则表达式 替换文件里的字符 3、列…...

手写节流防抖函数

1. 认识防抖和节流函数 防抖和节流的概念最早不是出现在软件工程中&#xff0c;防抖是出现在电子元件中&#xff0c;节流是出现的流体流动中。 而javascript是事件驱动的&#xff0c;大量的操作会触发事件&#xff0c;加入到事件队列中处理而对于某些频繁的事件处理会造成性能…...

camunda_11_connector

Camunda 的 service task 推荐使用 external task, 它有很多优点: 流程引擎可以做到轻量级, 流程引擎实例可以支持更多的业务.解耦流程引擎和业务代码, 以后的升级和部署将非常方便.借助external task SDK, 业务代码实现也非常简单external task 采用 pull 模式, 由 external t…...

通达信自动交易接口设置止损程序解析

通达信自动交易接口设置止损程序并不是很难&#xff0c;对于交易者来说&#xff0c;还是需要去学习一些编程知识&#xff0c;像交易中的止损程序&#xff0c;可以这样去编写和输入你的止损策略&#xff1a; &#xff08;1&#xff09;# 设置买卖止损值 def set_stop_lose_n…...

MySQL事务的理解

什么是事务 事务是是数据库操作的最小的单元&#xff0c;它包含了一个或者多个操作命令&#xff0c;这些命令作为一个整体来执 行&#xff0c;要么一起成功要么一起失败&#xff0c;事务是不可在分的一个整体的操作集合。 事务具备的四大特性 原子性&#xff1a;事务是一个…...

ubantu服务器崩溃,重装系统如何使用之前的账号

1.进入root账户下&#xff1a; sudo su 2.查看账号拥有者和所属组 ls -la 2.给现在系统&#xff0c;添加原来相同的已存在账号名&#xff1a; adduser newusername 注意&#xff1a;报告已存在用户名称&#xff01;不用管&#xff0c;这个错误。已经添加到新系统中了。 3.修…...

Python 逻辑回归

逻辑回归分类 训练二元分类器 加载仅有两个分类的数据 from sklearn.linear_model import LogisticRegression from sklearn import datasets from sklearn.preprocessing import StandardScaleriris datasets.load_iris() features iris.data[:100,:] target iris.target…...

web前端面试题附答案016-怎么让顶部轮播图渲染的更快?

一、为什么强调轮播图&#xff1f; 很多时候我们强调用户体验&#xff0c;而这里更多时候我们更强调完美的首屏体验&#xff0c;而现在几乎每个网站顶部第一个大模块就是轮播图。轮播图占得区域最大&#xff0c;图片质量也更高&#xff0c;几乎一张图片的面积&#xff0c;体积就…...

Python脚本,物联网云服务器端口监控

事实上&#xff0c;物联网的思路很简单&#xff0c;客户端设备通过TCP协议上传到某个云服务器的端口&#xff0c;我们需要在这个云服务器上编写一个小小的脚本去创建某个端口&#xff0c;持续监听&#xff0c;可以互相发送数据&#xff0c;这个脚本语言可以是JAVA&#xff0c;也…...

Python之wxPython框架的使用

Python之wxPython框架的使用一、安装wxPython二、创建一个 wx.App 的子类三、直接使用wx.App四、使用wx.Frame 框架五、常用控件1.Static Text 文本类2.TextCtrl 输入文本类3.Button 按钮类一、安装wxPython wxPython是个成熟而且特性丰富的跨平台GUI工具包。由Robin Dunn 和Ha…...

Xavier参数初始化方法和Kaiming参数初始化方法详细介绍及其原理详解

相关文章 梯度下降算法、随机梯度下降算法、动量随机梯度下降算法、AdaGrad算法、RMSProp算法、Adam算法详细介绍及其原理详解反向传播算法和计算图详细介绍及其原理详解激活函数、Sigmoid激活函数、tanh激活函数、ReLU激活函数、Leaky ReLU激活函数、Parametric ReLU激活函数…...

线程池EterfreeA/ThreadPool的使用

在GitHub上有个线程池项目&#xff0c;地址为 https://github.com/EterfreeA/ThreadPool &#xff0c;开源&#xff0c;它的License为AFL-3.0&#xff0c;这里了解学习下&#xff0c;code中有较多的中文说明: (1).Core.hpp: 一些define和size函数 (2).DoubleQueue.…...

Python科学计算:用NumPy快速处理数据

NumPy是Python 中一个非常重要的第三方库 它不仅是 Python 中使用最多的第三方库&#xff0c;而且还是 SciPy、Pandas 等数据科学的基础 库。它所提供的数据结构比 Python 自身的“更高级、更高效”&#xff0c;可以这么说&#xff0c;NumPy 所 提供的数据结构是 Python 数据…...

基于python实现的生成对抗网络GAN

项目简介 这篇文章主要介绍了生成对抗网络(Generative Adversarial Network),简称 GAN。 GAN 可以看作是一种可以生成特定分布数据的模型。 2.生成人脸图像 下面的代码是使用 Generator 来生成人脸图像,Generator 已经训练好保存在 pkl 文件中,只需要加载参数即可。由…...

Matlab----绘图以及文件储存

目录 二维曲线 基础函数&#xff1a;plot/fplot 绘制图形的辅助操作 文件存储 二维曲线 基础函数&#xff1a;plot/fplot &#xff08;1&#xff09;plot函数的基本用法&#xff1a;plot(x,y)其中x和y分别用于储存x坐标和y坐标数据 &#xff08;2&#xff09;最简单plot函…...

Docker - 12. 容器卷基本概念

目录 1. 容器卷是什么&#xff1f; 2. 容器卷的特点 1. 容器卷是什么&#xff1f; 卷就是目录或文件&#xff0c;存在于一个或者多个容器中&#xff0c;由docker挂载到容器&#xff0c;但不属于联合文件系统&#xff0c;因此能够绕过联合文件系统而提供一些用于存储或共享数…...

PHP 5 MySQLi 函数

PHP MySQLi 简介 PHP MySQLi PHP MySQL Improved! MySQLi 函数允许您访问 MySQL 数据库服务器。 注释&#xff1a;MySQLi 扩展被设计用于 MySQL 4.1.13 版本或更新的版本。 安装 / Runtime 配置 为了能够顺利使用 MySQLi 函数&#xff0c;您必须在编译 PHP 时添加对 MySQL…...

论文解读:OMNI-DIMENSIONAL DYNAMIC CONVOLUTION

github&#xff1a;https://github.com/OSVAI/ODConv pdf&#xff1a;https://openreview.net/pdf?idDmpCfq6Mg39 发表年份&#xff1a;2022 普通的卷积神经网络的卷积核是静态的&#xff0c;最近的动态卷积表明对卷积核权重的线性组合实现conv对输入数据的注意力加权&#xf…...

「Python|Selenium|场景案例」如何模拟鼠标单击、双击、右击、长按和拖拽等操作?

本文主要介绍如何在使用selenium进行自动化测试的时候模拟各种鼠标操作。 文章目录场景描述解决方案具体代码场景描述 在进行自动化测试的时候&#xff0c;我们可能会需要需要进行鼠标操作的场景&#xff0c;比如&#xff1a; 测试右击&#xff0c;查看是否网页是否屏蔽了右键…...

【深度学习基础2】生物神经元与感知机

一、生物神经元 让我们借助一个卡通的例子来阐述神经元是如何工作的。我们的感官与外部世界进行交互,感官将信号传递给神经元,神经元被激活,产生一个响应(例如,例子中的『哈哈大笑』) 在现实中,并非是一个神经元来完成这件事情,而是由大量神经元并行相连而构成的一个网…...