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

【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

相关文章:

  • 【类模板与模板类】 类模板与模板类详解
  • 【C++】智能指针的原理和实现
  • 【C++容器】数组和vector、array三者区别和联系
  • 【init和selft】Python中__init__和self的意义和作用
  • 【多线程】Linux下c语言多线程编程---学习
  • 【python】Series和DataFrame的简单介绍
  • 【闭包】Python中的闭包
  • 【线程池】C语言实现的简单的线程池
  • 【互斥锁和条件变量】何时互斥锁不够,还需要条件变量?
  • 【malloc和calloc】malloc和calloc函数区别
  • 【pthread_detach/pthread_join】pthread_detach()与pthread_join的区别?
  • 【时间复杂度】时间复杂度
  • 【Dll调试】DLL调试方法
  • 【机器学习】线性回归数学推导
  • 【VS消除警告】VS消除特定警告/安全函数警告C4996 strncpy unsafe……
  • Angular数据绑定机制
  • ES6核心特性
  • Next.js之基础概念(二)
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Vue UI框架库开发介绍
  • Vue小说阅读器(仿追书神器)
  • 初探 Vue 生命周期和钩子函数
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 驱动程序原理
  • 设计模式(12)迭代器模式(讲解+应用)
  • 时间复杂度与空间复杂度分析
  • 使用agvtool更改app version/build
  • 小程序开发中的那些坑
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • 积累各种好的链接
  • 如何在招聘中考核.NET架构师
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • # include “ “ 和 # include < >两者的区别
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #FPGA(基础知识)
  • (01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
  • (2)(2.10) LTM telemetry
  • (二十四)Flask之flask-session组件
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (九)c52学习之旅-定时器
  • (七)MySQL是如何将LRU链表的使用性能优化到极致的?
  • (收藏)Git和Repo扫盲——如何取得Android源代码
  • (转)【Hibernate总结系列】使用举例
  • ./和../以及/和~之间的区别
  • .NET 8.0 发布到 IIS
  • .NET Framework 4.6.2改进了WPF和安全性
  • :如何用SQL脚本保存存储过程返回的结果集
  • @Conditional注解详解
  • [20181219]script使用小技巧.txt
  • [Bada开发]初步入口函数介绍
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例
  • [C++]:for循环for(int num : nums)
  • [Docker]五.Docker中Dockerfile详解
  • [JavaScript]_[初级]_[关于forof或者for...of循环语句的用法]