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抓取Discuz!用户名脚本代码
Dec 30 Python
Python实现选择排序
Jun 04 Python
python编程测试电脑开启最大线程数实例代码
Feb 09 Python
Python OpenCV读取png图像转成jpg图像存储的方法
Oct 28 Python
Python图像滤波处理操作示例【基于ImageFilter类】
Jan 03 Python
Python使用pymongo库操作MongoDB数据库的方法实例
Feb 22 Python
python切片的步进、添加、连接简单操作示例
Jul 11 Python
python应用文件读取与登录注册功能
Sep 23 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
Jun 30 Python
详解pycharm连接远程linux服务器的虚拟环境的方法
Nov 13 Python
Pyqt助手安装PyQt5帮助文档过程图解
Nov 20 Python
python中__slots__节约内存的具体做法
Jul 04 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作的文本留言本的例子(一)
2006/10/09 PHP
PHP 变量的定义方法
2010/01/26 PHP
mysql_num_rows VS COUNT 效率问题分析
2011/04/23 PHP
php随机取mysql记录方法小结
2014/12/27 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
PHP类的特性实例分析
2016/09/28 PHP
PHP二维关联数组的遍历方式(实例讲解)
2017/10/18 PHP
ThinkPHP 3.2.3实现加减乘除图片验证码
2018/12/05 PHP
javascript 面向对象 function类
2010/05/13 Javascript
dreamweaver 8实现Jquery自动提示
2014/12/04 Javascript
jquery实现动画菜单的左右滚动、渐变及图形背景滚动等效果
2015/08/25 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
Vue.js bootstrap前端实现分页和排序
2017/03/10 Javascript
详解如何优雅地在React项目中使用Redux
2017/12/28 Javascript
node命令行工具之实现项目工程自动初始化的标准流程
2019/08/12 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
基于JavaScript实现单例模式
2019/10/30 Javascript
windows下python连接oracle数据库
2017/06/07 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
python实现C4.5决策树算法
2018/08/29 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
Python多线程处理实例详解【单进程/多进程】
2019/01/30 Python
Python3中编码与解码之Unicode与bytes的讲解
2019/02/28 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
python绘制彩虹图
2019/12/16 Python
django修改models重建数据库的操作
2020/03/31 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
Python 删除List元素的三种方法remove、pop、del
2020/11/16 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
用html5的canvas画布绘制贝塞尔曲线完整代码
2013/08/14 HTML / CSS
西班牙最大的婴儿用品网上商店:Bebitus
2019/05/30 全球购物
批评与自我批评材料
2014/02/15 职场文书
家庭财产分割协议范文
2014/11/24 职场文书
义诊活动通知
2015/04/24 职场文书
2015年七年级班主任工作总结
2015/05/21 职场文书
JS数组去重详情
2021/11/07 Javascript