Python做文本按行去重的实现方法


Posted in Python onOctober 19, 2016

文本:

每行在promotion后面包含一些数字,如果这些数字是相同的,则认为是相同的行,对于相同的行,只保留一行。

思路:

根据字典和字符串切割。

建立一个空字典。

读入文本,并对每行切割前半部分,在读入文本的过程中循环在这个字典中查找,如果没找到,则写入该行到字典。否则,则表示该行已经被写入过字典了(即出现重复的行了),不再写入字典,这就实现了对于重复的行只保留一行的目的。

文本如下:

/promotion/232 utm_source
/promotion/237 LandingPage/borrowExtend/? ;
/promotion/25113 LandingPage/mhd
/promotion/25113 LandingPage/mhd
/promotion/25199 com/LandingPage
/promotion/254 LandingPage/mhd/mhd4/? ;
/promotion/259 LandingPage/ydy/? ;
/promotion/25113 LandingPage/mhd
/promotion/25199 com/LandingPage
/promotion/25199 com/LandingPage

程序如下:

line_dict_uniq = dict()
with open('1.txt','r') as fd:
for line in fd:
key = line.split(' ')[0]
if key not in line_dict_uniq.values():
line_dict_uniq[key] = line
else:
continue
print line_dict_uniq 
print len(line_dict_uniq)
# 这里是打印了不重复的行(重复的只打印一次),实际再把这个结果写入文件就可以了,
# 就不写这段写入文件的代码了

上面这个程序执行效率比较低,改成如下会提高一些:

line_dict_uniq = dict()
with open('1.txt','r') as fd:
for line in fd:
key = line.split(' ')[0]
if key not in line_dict_uniq.keys():
line_dict_uniq[key] = line
else:
continue
print line_dict_uniq
print len(line_dict_uniq)

继续补充一个函数

# -*- coding: utf-8 -*-
'''
只使用与较小的文件,比较大的文件运行时间长
'''
def quchong(infile,outfile):

  infopen = open(infile,'r',encoding='utf-8')
  outopen = open(outfile,'w',encoding='utf-8')
  lines = infopen.readlines()
  list_1 = []
  for line in lines:
    if line not in list_1:
      list_1.append(line)
      outopen.write(line)
  infopen.close()
  outopen.close()
quchong("源文件路径","目标文件路径")

以上所述是小编给大家介绍的Python做文本按行去重,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Python实现二叉树结构与进行二叉树遍历的方法详解
May 24 Python
python2.7 mayavi 安装图文教程(推荐)
Jun 22 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
python得到qq句柄,并显示在前台的方法
Oct 14 Python
python实现加密的方式总结
Jan 19 Python
python 解决print数组/矩阵无法完整输出的问题
Feb 19 Python
Python Numpy中数据的常用保存与读取方法
Apr 01 Python
使用pygame实现垃圾分类小游戏功能(已获校级二等奖)
Jul 23 Python
Jupyter Notebook安装及使用方法解析
Nov 12 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
MoviePy简介及Python视频剪辑自动化
Dec 18 Python
python基于selenium爬取斗鱼弹幕
Feb 20 Python
Python首次安装后运行报错(0xc000007b)的解决方法
Oct 18 #Python
python类中super()和__init__()的区别
Oct 18 #Python
Python 序列的方法总结
Oct 18 #Python
python 异常处理总结
Oct 18 #Python
python 队列详解及实例代码
Oct 18 #Python
django model去掉unique_together报错的解决方案
Oct 18 #Python
django批量导入xml数据
Oct 16 #Python
You might like
PHP连接MySQL数据的操作要点
2015/03/20 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
浅析javascript操作 cookie对象
2014/12/26 Javascript
基于Bootstrap的后台管理面板 Bootstrap Metro Dashboard
2016/06/17 Javascript
1秒50万字!js实现关键词匹配
2016/08/01 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
jquery实现折叠菜单效果【推荐】
2017/03/08 Javascript
浅谈angular4生命周期钩子
2017/09/05 Javascript
浅谈SpringMVC中post checkbox 多选框value的值(隐藏域方式)
2018/01/08 Javascript
vue.js图片转Base64上传图片并预览的实现方法
2018/08/02 Javascript
vue.js input框之间赋值方法
2018/08/24 Javascript
小程序实现展开/收起的效果示例
2018/09/22 Javascript
如何为vuex实现带参数的 getter和state.commit
2019/01/04 Javascript
利用Dectorator分模块存储Vuex状态的实现
2019/02/05 Javascript
js实现点击烟花特效
2020/10/14 Javascript
基于javascript实现移动端轮播图效果
2020/12/21 Javascript
[01:38:19]夜魇凡尔赛茶话会 第五期
2021/03/11 DOTA
布同 Python中文问题解决方法(总结了多位前人经验,初学者必看)
2011/03/13 Python
跟老齐学Python之使用Python查询更新数据库
2014/11/25 Python
python实现用于测试网站访问速率的方法
2015/05/26 Python
Scrapy基于selenium结合爬取淘宝的实例讲解
2018/06/13 Python
python实现的读取网页并分词功能示例
2019/10/29 Python
python3连接MySQL8.0的两种方式
2020/02/17 Python
python 装饰器的实际作用有哪些
2020/09/07 Python
Python的collections模块真的很好用
2021/03/01 Python
详解CSS3弹性伸缩盒
2020/09/21 HTML / CSS
THE OUTNET英国官网:国际设计师品牌折扣网站
2016/08/14 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
在对linux系统分区进行格式化时需要对磁盘簇(或i节点密度)的大小进行选择,请说明选择的原则
2012/11/24 面试题
入党自我鉴定
2014/03/25 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
飞屋环游记观后感
2015/06/08 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS
python 如何用terminal输入参数
2021/05/25 Python
你喜欢篮球吗?Python实现篮球游戏
2021/06/11 Python