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 爬虫多线程详解及实例代码
Oct 08 Python
Python多维/嵌套字典数据无限遍历的实现
Nov 04 Python
python bottle框架支持jquery ajax的RESTful风格的PUT和DELETE方法
May 24 Python
python opencv实现旋转矩形框裁减功能
Jul 25 Python
python 计算平均平方误差(MSE)的实例
Jun 29 Python
Python数据可视化实现正态分布(高斯分布)
Aug 21 Python
Python三元运算与lambda表达式实例解析
Nov 30 Python
python实现异常信息堆栈输出到日志文件
Dec 26 Python
结束运行python的方法
Jun 16 Python
python中doctest库实例用法
Dec 31 Python
python 三边测量定位的实现代码
Apr 22 Python
Python办公自动化PPT批量转换操作
Sep 15 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
phpword插件导出word文件时中文乱码问题处理方案
2014/08/19 PHP
php可应用于面包屑导航的迭代寻找家谱树实现方法
2015/02/02 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
Zend Framework框架之Zend_Mail实现发送Email邮件验证功能及解决标题乱码的方法
2016/03/21 PHP
php + WebUploader实现图片批量上传功能
2019/05/06 PHP
刷新页面实现方式总结(HTML,ASP,JS)
2008/11/13 Javascript
js之事件冒泡和事件捕获详细介绍
2013/10/28 Javascript
javascript中怎么做对象的类型判断
2013/11/11 Javascript
利用js判断浏览器类型(是否为IE,Firefox,Opera浏览器)
2013/11/22 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
Jquery和JS获取ul中li标签的实现方法
2016/06/02 Javascript
jQuery Ajax File Upload实例源码
2016/12/12 Javascript
vue实现ToDoList简单实例
2017/02/07 Javascript
JQuery EasyUI 结合ztrIee的后台页面开发实例
2017/09/01 jQuery
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
JS将时间秒转换成天小时分钟秒的字符串
2019/07/10 Javascript
javascript面向对象程序设计实践常用知识点总结
2019/07/29 Javascript
jQuery 移除事件的方法
2020/06/20 jQuery
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
浅谈Python中的可变对象和不可变对象
2017/07/07 Python
pyinstaller打包opencv和numpy程序运行错误解决
2019/08/16 Python
Python 元组操作总结
2019/09/18 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
对python中list的五种查找方法说明
2020/07/13 Python
Python二元算术运算常用方法解析
2020/09/15 Python
Django中如何用xlwt生成表格的方法步骤
2021/01/31 Python
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
全球游戏Keys和卡片市场:GamesDeal
2018/03/28 全球购物
职工趣味运动会方案
2014/02/10 职场文书
2014领导班子专题民主生活会对照检查材料思想汇报
2014/09/23 职场文书
酒店财务部岗位职责
2015/04/14 职场文书
《时代广场的蟋蟀》读后感:真挚友情,温暖世界!
2020/01/08 职场文书
Python爬虫之爬取某文库文档数据
2021/04/21 Python
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏