python怎么删除包含指定中文的行 50
需要用python写一个删除匹配内容的小文件,虽然excel、sed之类的也能做,但是真的需要python来完成。自己鼓捣了半天没弄出来,希望能请python老鸟帮忙解决...
需要用python写一个删除匹配内容的小文件,虽然excel、sed之类的也能做,但是真的需要python来完成。自己鼓捣了半天没弄出来,希望能请python老鸟帮忙解决一下,不胜感激。
有2个文件,分别是:del.txt和input.txt
del.txt包含了需要匹配的字符,有中文有英文,一行一个,示例如下:
张三
lucy
input.txt内容是待处理的文字,一行一个,示例如下:
张三人很好
李四是学习委员
lucy很善良
张三的爸爸是科学家
lucy钢琴十级
lucy是英语课代表
李四和张三是好朋友
lina是lucy的妹妹
lina经常向李四请教数学
李四成绩很好
目的:
先从del.txt中读取内容,再从input.txt中删除匹配的行,将删除匹配字符的行保存为output.txt,已经删除的内容保存为deleted.txt
那么刚刚上述举例的最终处理结果,output.txt就是这样的:
李四是学习委员
lina经常向李四请教数学
包含了张三和lucy的所有内容被保存至deleted.txt
说明:del.txt里面的内容大概有5、6百,input.txt文件中大概有75万行数据,所以希望能考虑一下执行的效率。。。
具体文件以及要求已经传到百度网盘(http://pan.baidu.com/s/1i3yx4Qp)了,这么说起来太纠结了。。。囧。。。 展开
有2个文件,分别是:del.txt和input.txt
del.txt包含了需要匹配的字符,有中文有英文,一行一个,示例如下:
张三
lucy
input.txt内容是待处理的文字,一行一个,示例如下:
张三人很好
李四是学习委员
lucy很善良
张三的爸爸是科学家
lucy钢琴十级
lucy是英语课代表
李四和张三是好朋友
lina是lucy的妹妹
lina经常向李四请教数学
李四成绩很好
目的:
先从del.txt中读取内容,再从input.txt中删除匹配的行,将删除匹配字符的行保存为output.txt,已经删除的内容保存为deleted.txt
那么刚刚上述举例的最终处理结果,output.txt就是这样的:
李四是学习委员
lina经常向李四请教数学
包含了张三和lucy的所有内容被保存至deleted.txt
说明:del.txt里面的内容大概有5、6百,input.txt文件中大概有75万行数据,所以希望能考虑一下执行的效率。。。
具体文件以及要求已经传到百度网盘(http://pan.baidu.com/s/1i3yx4Qp)了,这么说起来太纠结了。。。囧。。。 展开
展开全部
#!/usr/bin/env python
#coding=utf-8
def read_del_list(path):
del_list = list()
with open(path, 'w') as file_handle:
for row in file_handle:
del_list.append(row.strip())
return del_list
def filte_file(from_file, to_file, del_list):
with open(from_file) as file_handle_from:
with open(to_file) as file_handle_to:
for row in file_handle_from:
if not any(key_word in row for key_word in del_list):
file_handle_to.write(row)
if __name__ == '__main__':
del_list = read_del_list(r"del_list.txt") #读取过滤规则
filte_file(r"source.txt", "output.txt", del_list)#过滤文件
追问
呃,del_list.txt里面的内容被删除了,但是output.txt里面生成的文件却没有去除掉需要删除的内容。。。。
具体文件以及要求已经传到百度网盘(http://pan.baidu.com/s/1i3yx4Qp)了,这么说起来太纠结了。。。囧。。。
追答
对不起,忘记加打开模式
#!/usr/bin/env python
#coding=utf-8
def read_del_list(path):
del_list = list()
with open(path, 'r') as file_handle:
for row in file_handle:
del_list.append(row.strip())
return del_list
def filte_file(from_file, to_file, del_list):
with open(from_file, 'r') as file_handle_from:
with open(to_file, 'w') as file_handle_to:
for row in file_handle_from:
if not any(key_word in row for key_word in del_list):
file_handle_to.write(row)
if __name__ == '__main__':
del_list = read_del_list(r"del.txt") #读取过滤规则
filte_file(r"input.txt", "output.txt", del_list)#过滤文件
展开全部
fa=open('del.txt','rt')
fb=open('output.txt','rt')
fc=open('c.txt','wt')
a=set()
for line in fa:
a.add(line.strip())
fa.close()
for line in fb:
exist=False
for m in a:
if line.startswith(m):
exist=True
break
if exist: print('skip '+line)
else: fc.write(line)
fb.close()
fc.close()
这段代码是借用其他网友的,看了下没有错误,省的自己敲了,你看哪里不明白。或者你把自己的代码粘上来帮你检查也行。
fb=open('output.txt','rt')
fc=open('c.txt','wt')
a=set()
for line in fa:
a.add(line.strip())
fa.close()
for line in fb:
exist=False
for m in a:
if line.startswith(m):
exist=True
break
if exist: print('skip '+line)
else: fc.write(line)
fb.close()
fc.close()
这段代码是借用其他网友的,看了下没有错误,省的自己敲了,你看哪里不明白。或者你把自己的代码粘上来帮你检查也行。
追问
运行了一下,跟上面那位同学的代码一样,最后的输出的output.txt内容为空。具体文件以及要求已经传到百度网盘(http://pan.baidu.com/s/1i3yx4Qp)了,这么说起来太纠结了。。。囧。。。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
两个for循环跑吧。。。
追问
talk is cheap show me the code
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询