python命令删除文本文档中含有特定字符的行

现有TXT文本数据,每个200M左右,近1000个,txt文本内数据格式如下:

Ai15-2 9.531, 9.531

Ai15-3 9.531, 9.531

Ai15-4 9.531, 9.531

Ai15-5 9.531, 9.531

Ai15-6 9.531, 9.531

Ai15-7 6.415, 6.415

Ai15-8 7.556, 7.556

Ai15-9 7.556, 7.556

Ai15-10 7.556, 7.556

Ai15-11 9.706, 9.706

Ai15-12 10.804, 10.804

Ai15-13 10.248, 10.248

Ai15-14 10.248, 10.248

Ai15-15 10.248, 10.248

Ai15-16 9.297, 9.297

Ai15-17 9.297, 9.297

Ai15-18 10.452, 10.452

Ai15-19 10.452, 10.452

Ai15-20 11.535, 11.535

Ai15-21 11.535, 11.535

Ai15-22 11.535, 11.535

Ai15-23 11.535, 11.535

Ai15-24 11.535, 11.535

Ai15-25 11.681, 11.681

Ai15-26 11.681, 11.681

Ai15-27 11.535, 11.535

Ai15-28 12.515, 12.515

Ai15-29 11.535, 11.535

Ai15-30 11.535, 11.535

Ai15-31 11.535, 11.535

Ai15-32 11.535, 11.535

Ai15-33 10.452, 10.452

Ai15-34 10.452, 10.452

Ai15-35 9.297, 9.297

Ai15-36 9.297, 9.297

Ai15-37 9.297, 9.297

Ai15-38 8.521, 8.521

Ai15-39 8.521, 8.521

Ai15-40 5.83, 5.83

Ai15-41 5.83, 5.83

Ai15-42 5.83, 5.83

Ai15-43 5.83, 5.83

Ai15-44 5.753, 5.753

Ai15-45 5.753, 5.753

Ai15-46 3.745, 3.745

Ai15-52 5.995, 5.995

Ai15-53 4.19, 4.19

Ai15-63 6.237, 6.237

Ai15-64 3.846, 3.846

Ai15-73 5.919, 5.919

Ai15-74 7.351, 7.351

Ai15-84 9.18, 9.18

Ai15-91 9.355, 9.355

Ai15-92 10.555, 10.555

Ai15-100 6.097, 6.097

Ai15-101 10.555, 10.555

Ai15-112 9.355, 9.355

Ai15-122 6.097, 6.097

Ai15-127 8.521, 8.521

......
数据中每行含有的数据结构为:
">"+"序号名"+"空格"+"数字"+","+"空格"+"数字"

想用一段python程序,
将数据内数字大小在9.500到12.500之间的行保留,
将数据内数字小于9.500和大于12.500的行删除,
比如,上面的数据,
删除行内"数字"小于"9.500"的行,和行内"数字"大于"12.500"的行后,
剩下的数据为:

Ai15-2 9.531, 9.531

Ai15-3 9.531, 9.531

Ai15-4 9.531, 9.531

Ai15-5 9.531, 9.531

Ai15-6 9.531, 9.531

Ai15-11 9.706, 9.706

Ai15-12 10.804, 10.804

Ai15-13 10.248, 10.248

Ai15-14 10.248, 10.248

Ai15-15 10.248, 10.248

Ai15-18 10.452, 10.452

Ai15-19 10.452, 10.452

Ai15-20 11.535, 11.535

Ai15-21 11.535, 11.535

Ai15-22 11.535, 11.535

Ai15-23 11.535, 11.535

Ai15-24 11.535, 11.535

Ai15-25 11.681, 11.681

Ai15-26 11.681, 11.681

Ai15-27 11.535, 11.535

Ai15-29 11.535, 11.535

Ai15-30 11.535, 11.535

Ai15-31 11.535, 11.535

Ai15-32 11.535, 11.535

Ai15-33 10.452, 10.452

Ai15-34 10.452, 10.452

Ai15-92 10.555, 10.555

Ai15-101 10.555, 10.555

......
最好可以在原来的TXT文件内直接操作;
也可以将删除之后留下的数据存放在新的文件中。

0

4个回答

#coding:utf-8
#python3.5.1

import re

file_path0 = r'G:\任务20180312\test/handle1.txt'

f = open(file_path0)
#读取全部内容
lines = f.readlines() #lines在这里是一个list
#获取行数
nums = len(lines)
#建立一个空列表
rows_get = []
#循环行数
for i in range(nums):
line = lines[i] #line类型为str
#开始用正则得到数字部分,并判断
#给定正则规则
p = r',(.+)' #发现每行取逗号后面部分就行
#编译正则
pattern = re.compile(p)
try:
#查找,用try判断是因为还存在空行
number = re.findall(pattern,line)[0] #这里number类型 str
#去除空格
number = number.strip()
#转换int,便于比较
number = float(number)
#判断数字小于9.500和大于12.500的行删除
if number 12.500:
pass
else:
rows_get.append(i)

except:
    continue

#rows_get使我们所需要的数据
print(rows_get)

#建立空字符串
text = ''
for x in rows_get:
#得到想要的每行数据
row = lines[x]
#叠加
text = text + row

with open(r'G:\任务20180312\test/handle1_get.txt','w') as f:
f.write(text)
下图是出来的结果
图片说明

-2
 def func(line):
    if not line.rstrip() : return False                              
    num1=float(line.split(',')[-1])
    num2=float(line.split(',')[0].split(" ")[-1])
    print(num1,"  ",num2,'in the line')
    if  12.500 > num1 > 9.500 and  9.500<num2 <12.500 :return True
    return False
with open("result.txt",'w') as f: 
     f.writelines(list(filter(func,open("txt1.txt"))))
$cat result.txt:
Ai15-2 9.531, 9.531
Ai15-3 9.531, 9.531
Ai15-4 9.531, 9.531
Ai15-5 9.531, 9.531
Ai15-6 9.531, 9.531
Ai15-11 9.706, 9.706
Ai15-12 10.804, 10.804
Ai15-13 10.248, 10.248
Ai15-14 10.248, 10.248
Ai15-15 10.248, 10.248
Ai15-18 10.452, 10.452
Ai15-19 10.452, 10.452
Ai15-20 11.535, 11.535
Ai15-21 11.535, 11.535
Ai15-22 11.535, 11.535
Ai15-23 11.535, 11.535
Ai15-24 11.535, 11.535
Ai15-25 11.681, 11.681
Ai15-26 11.681, 11.681
Ai15-27 11.535, 11.535
Ai15-29 11.535, 11.535
Ai15-30 11.535, 11.535
Ai15-31 11.535, 11.535
Ai15-32 11.535, 11.535
Ai15-33 10.452, 10.452
Ai15-34 10.452, 10.452
Ai15-92 10.555, 10.555
Ai15-101 10.555, 10.555
1
 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()
0
yuanzhen_licheng
yuanzhen_licheng 非常感谢您!
10 个月之前 回复

望采纳

 def chuli(infile,outfile):
    fp = open(infile,'r')
    fout = open(outfile,'w')
    for line in fp.readlines():
        line = line.strip()
        if not line:
            continue
        num1 = 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)
0
yuanzhen_licheng
yuanzhen_licheng 非常感谢您!
10 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python删除文档中含关键字的行
背景:今天一同事让我帮忙处理一下文件里含有----+符号的行。如图所示:    里面文档好几百行,一行一行去删除,肯定是又浪费时间,又没效率的事情。这时候可以使用Python脚本去处理! 一 设计思路      其实这个很有规律的,它的开头是以“—”开头,先使用readlines方法读取每一行,然后每一行进行正则匹配,匹配成功的行就直接删除! 二 程序代码 #co
pandas.DataFrame中删除包涵特定字符串所在的行
你在使用pandas处理DataFrame中是否遇到过如下这类问题?我们需要删除某一列所有元素中含有固定字符元素所在的行,比如下面的例子:如果要删除的元素固定有更简单的方法,可参考另一篇博文:http://blog.csdn.net/htbeker/article/details/79427628...
删除Word中含有指定内容的整行
操作方法: 1、快捷键 Ctrl+H,打开Word的查找替换窗口,单击【更多】按钮,勾选“使用通配符”。 2、在查找内容处,输入“答案*^13”,替换为处什么都不填。 3、单击【全部替换】。 知识扩展: ^13是什么意思? ^13合起来就是回车,因为13这个数在ASCII码是回车符,所以在WORD通过^这个转义符号把变成了回车符。 ...
linux删除文件中含有某字符的行
sed -i -e '/string/d' file 脚本,从键盘输入删除含某字符行 #!/bin/sh FILENAME=file.txt # 可换为$1 if [ ! -f file.txt ];then echo "$FILENAME no found" exit 1 fi echo -n "INPUT SOME THING: "
Python 查找含有特定单个或多个字符的行
1. Match Complete Lines That contain a Word (eg. error) (?im)^.*\berror\b.*$ 2. Match any lines That contain one of multiple words (eg, one, two , three) (?im)^.*\b(one|two|three)\b.*$ 3. Match line
python 选取列表中某列所含特定字符所在的所有行
如下图所示,找出列表【title】这一列,只要出现【中国】这两个特定字符,所在的行,全部取出来。  这个表格,定义为df: for i in range(len(df)): a=&quot;中国&quot; if a in df.loc[i,'title']: print(df.loc[i,:]) 结果如下图所示,非常之不美观,因此,可创建列表,存放数据。        ...
python取文本中含有指定关键词的行
python取文本中含有指定关键词的行 脚本内容: f = open('/home/py/9.txt','r') lines = f.readlines() for lines in lines:    if &quot;EIPId&quot; in lines:      print(lines) 【备注】: 9.txt是某文本 &quot;EIPId&quot;是指定关键词...
python小脚本 删除含有特定字符的txt,并重命名
#-*- coding: UTF-8 -*- import os #删除txt中含有0的项目,并且删除与之对应的image def delete_no_car_picture(): for txtname in labeltxt: #print txtname f = open(labelpath+"/"+txtname) res = f.
Pandas删除某列包含特殊字符的行
1、测试文件(test_data.xlsx)数据如下:  2、删除type列中包含&quot;未知&quot;的所有行 # -*- coding: utf-8 -*- import pandas as pd read_data=pd.read_excel('test_data.xlsx') #读取excel表格数据 print(read_data) read_data=read_data[ ~ rea...
如何删除文本或excel表格内包含某一字符的所有行
工作和学习中,我们往往需要删除一大段文本或者excel表格内包含某一字符的所有行。ps:如果只要删除所有的特定字符(注意不是删除所有行),那直接替换为空白就行了,不赘述。工具/原料 excel表格方法/步骤1.将需要处理的文本文件内容全部复制到excel表格,如果要处理的是excel文件则忽略这一步骤。 如图所示,把示例文件全部拷贝到excel的A列。2.选中文件所在的列,按Ctrl+F查找,将
python:删除文件中包含关键词的行
re.compile(),正则表达式在模式匹配前进行预编译;使用预编译代码比字符串快; test.txt中包含以下文字: 1:li 2:test 3:num 在运行完程序,生成的target.txt中,内容为 1:li 3:num 代码清单如下: import re list = [] matchPattern = re.compile(r'.+:test')
python删除文件中含"指定内容"的行
#!/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 a
pandas如何去掉、过滤数据集中的某些值或者某些行?
摘要在进行数据分析与清理中,我们可能常常需要在数据集中去掉某些异常值。具体来说,看看下面的例子。0.导入我们需要使用的包import pandas as pdpandas是很常用的数据分析,数据处理的包。anaconda已经有这个包了,纯净版python的可以自行pip安装。1.去掉某些具体值数据集df中,对于属性appPlatform(最后一列),我们想删除掉取值为2的那些样本。如何做?非常简单...
使用正则删除含有指定字符串的行
notepad++ 下使用下列命令 1、删除含有指定字符串的行 替换:  ^.*(指定字符串).*$  为空 例如,删除含有"0x000017a4"的行, 替换:  ^.*0x000017a4.*$   为空     2、删除//行注释 替换: //.*$  为空 【注意】此正则会误删在引号中的'//',  如 'https://www.baidu.com'     3、删除/
linux下删去文件中包含某个字符串的行
删除文件中带有某个字符串的所有行 a.txt sed -e '/xxx/d' a.txt -->打印出来 文件中包含xxx的行都不会显示 使用-i参数的话就直接修改文件了 修改指定字符串 sed -e 's/aaa/bbb/g'  全局aaa替换为bbb 打印指定行 cat a.txt | sed -n '1,3p'  打印文件a.txt的1到3行
sed删除指定字符开头的行的上一行的指定字符
最近在学习Oracle11g数据库时,需要将MySQL数据插入脚本转换成Oracle脚本,以在Oracle数据库中新建表和插入数据,方便练习。可是MySQL脚本太大,普通文本编辑器无法处理,于是用Linux下的sed老牌流编辑器来做。其中,有一段SQL脚本内容如下,INSERT INTO bonusreturnorder VALUES ('47', '224', '1300573', '2', '1
Python删除文件夹下所有包含指定字符串的文件
如果是几万张照片,即使是框选再删除也会很慢,这个时候不如用python来删除文件。需要导入自带的os模块。 下面是代码: import os path=&quot;E:/DataSets/catdog/&quot; files=os.listdir(path) for i ,f in enumerate(files): if f.find(&quot;cat&quot;)&amp;gt;=0 : print(i) ...
Shell 删除指定文件中含有指定字符的行
Shell 删除指定文件中含有指定字符的行,2个参数,脚本中有注释
提取海量文本文件中含有指定字符串的行
在工作中遇到一个提取一个目录中所有文本文件中含有特定字符串的行,并将其写入一个文件,于是有了以下代码。 # -*- coding: utf8 -*- import os import sys import glob import time reload(sys) sys.setdefaultencoding('utf-8') abspath = os.path.dirname(__file__
涛哥的Python工具箱之批量删除含指定字符串行
对于一个出色的程序员来说,重复是最不能接受的事情之一,因此我们要发明工具把重复的工作自动化。以前我是用linux shell脚本来完成这些事情的,但由于shell脚本语法能力的限制,有些复杂功能无法有效快速的实现,并且写出的代码难以维护,基本属于一次性代码,很难复用。因此后面慢慢开始尝试用Python完成一些自动化脚本,由于Python语言强大的表现力和严格的书写规范,这些缺点都解决了! 最近打算把一些日常研发过程用的Python脚本逐步整理出来开源,于是就有了这个专题,希望能够帮助大家摆脱那些
删除文件指定行的十种方法及性能分析
1. 问题描述:   请设计一个程序,通过命令行参数接收一个文件名 filename.txt (纯文本文件)和一个整型数字 n,实现从 filename.txt 中删除第 n 行数据。2. 解题思路:   (1) 借助临时文件: 将文件逐行读取,跳过要删除的行,并将其写入临时文件,然后删除源文件,重命名临时文件为源文件,完成删除指定行数据。   (2) 不借助临时文件: 将文件以读写方式打开
pandas 删除特定行
https://www.cnblogs.com/wuzhiblog/p/python_pandas.html
vim小技巧 -- 删除包含特定字符串的行
删除包含something的所有行 :g/something/d
python去掉字符串中某些特定的字符
1 . 去掉一行字符串中的汉字english_only = ''.join(x for x in str(col) if ord(x) < 256)2. 去掉字符串中所有的英文以及一些特殊符号#re是一个python库,需要提前倒入这个库 str = re.sub("[A-Za-z0-9\!\%\[\]\,\。\.]", "", col)
选择包含某字符的列 pandas
选择包含“承德”的列数据 #-*-coding:utf-8-*- import pandas as pd from pandas import DataFrame #读取数据 file = pd.read_excel('test.xlsx',encoding='utf-8') df = pd.DataFrame(file) for index,row in df.iterrows(): ...
Python实现csv文件中特定字符串的删除
file1 = open('labels.csv', 'r').readlines() fileout = open('labels1.csv', 'w') for line in file1: fileout.write(line.replace('&quot;trafficLight&quot;', '')) fileout.close() 由labels.csv生成labels1.csv,扩展类别...
文本有很多行,已知某行里面含有某特定字符,怎样提取出某行
如:TEXT1里面有多行文字:今年共有20名北京学生被录为免费师范生,其中陕西师范大学在京招生17人,东北师大招生3人。陕西师范大学招办负责人惠刚介绍,在京招收的17个免费师范生中,男生5人,女生12人,与往年情况相同。但今年城镇考生达到11人,农村考生仅为6人,这是今年的一个显著变化。已经知道要查找的字符串是:负责人那么怎么在TEXT2里面显示:陕西师范大学招办负责人惠刚介绍,有两种不同
UltraEdit实现“删除包含某个关键字的所有行”
UltraEdit实现“删除包含某个关键字的所有行”   1.Ctrl+R调出“替换对话框” 2.在左下角的“正则表达式”和“从文件顶部全部替换”都打勾(正则表达式引擎用UltraEdit) 3.在“查找内容”后面输入:*select*^p 4.在“替换为”后面置空 5.点击右侧的“全部替换” 但是注意这里的^p只是在unix编码格式中,dos编码格式
linux之批量删除某个目录下多个文件中含有特定字符串的行
l=&quot;abc&quot;sed -i &quot;/$l/d&quot; `grep -rl $l $dir`*删除目录dir中多个文件含有字符串abc的行
在整个文件夹下 找含有固定字符串的文件 并定位到行
find ./ -name "*php" | xargs grep -nri "function _log("
python中删除特定字符串
现在有一个字符串,有一些不想要的单词和特殊字符 import re text = 'wo,didi;wode,;wode' text0 = text.replace('didi', '') print(re.sub('[,;]', ' ', text0)) 先用替换后用子串可以得到自己想要的结果:wo wode wode   python中字符串自带的split方法一次只能使用一个字符对字...
Notepad++一次删除带指定关键字的行
如图,删除带”delete”的行 打开替换,在查找目标输入框中输入 .delete.\r\n ,使用unix换行符的输入.delete.\n ,替换为 输入框保持空白,如图: 选择全部替换,看到带delete的两行已删除,大功告成,如图: ...
凡是某单元有特定字符的,则删除整行 (VBA )
有个工作表,有N行N列,B列是领料部门,C列是领料用途,E列是发料仓库,凡是B列有“研发部”、“技术部”,则整行删除; 凡是C列有“检测”、“修理”、“生产”,则整行删除;凡是E列有“基建仓库”、“成品仓库”,则整行删除。 Sub Delrows()      Dim Arr, k&     Arr = [A1].CurrentRegion     Applicat
【shell】删除文件中包含指定字符串的行(sed)
删除文件中含特定字符串的行[bash]:sed -e '/abc/d'  a.txt   // 删除a.txt中含&quot;abc&quot;的行,但不改变a.txt文件本身,操作之后的结果在终端显示sed -e '/abc/d'  a.txt  &amp;gt; a.log   // 删除a.txt中含&quot;abc&quot;的行,将操作之后的结果保存到a.logsed '/abc/d;/efg/d' a.txt &amp;gt; a.log...
vim 删除包含指定字符的行
删除包含特定字符的行,匹配删除 :% g/abc/d 删除不包含特定字符的行, % v/abc/d % g!/abc/d
用python批量删除含有相同字符的文件
如果想删除一个文件夹以及其次级文件夹下的含有相同字符的文件。 如果我想删除example文件夹下所有含有dest字符的文件,则可有下面的代码:import sys #currDir = sys.path[0] currDir = '~/example'import os def removeFile(dir,delete_string): if os.path.isdir(dir):
UltraEdit中删除含有/不含有特定内容的行
如某文件中有些行含有特定内容test 1. UltraEdit中删除含有特定内容的行 a. 按ctrl+r,使用“替换”功能,勾选正则表达式,引擎默认UltraEdit,“替换”内容为“%*test*^p”,“替换为”为空; ^p 是 DOS 文件类型的换行符。如果是 Unix 类型文件,则用 ^n. b. 删除空行,使用“替换”功能,“替换”内容为“^r^n^r^n”,“替换为”为“
Python 删除特定字符的行
A.txt文件有10万行。rnrn只要行中出现 gmail 或者 aol 或者 yahoo 就删除这个行。rnrn用Python怎么写,谢谢啦!
python 如何在一个文件中删除有某个关键字一行用新的一行替换或者没有的话新增一行
def add_info_to_file(cd_dir= ''):     present_dir = os.getcwd()  #记录一下当前的目录    os.chdir(cd_dir) #参数是跳转到想要的目录下    isExists = os.path.exists('XXX_bak')    if not isExists:        shutil.copyfile('XXX', ...
pandas.DataFrame删除/选取含有特定数值的行或列
1.删除某列空值所在行实现思路:利用pandas.DateFrame.fillna对空值赋予特定值,再利用pandas.DateFrame.isin(部分情况也可以使用pandas.DateFrame.str.contains,主要根据填充的数据类型决定)找到这些含有特定值的行去除即可。import pandas as pd import numpy as np df = pd.DataFram...
文章热词 特定语法二值化 Java SpringCloud网关配置命令 Python Python课程 Python学习
相关热词 c#删除特定字符 c++删除文件 特定行 c++删除字符串中所有特定字符 python删除空白教程 python删除pip教程