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中is与==判断的区别
Mar 28 Python
修复 Django migration 时遇到的问题解决
Jun 14 Python
python得到单词模式的示例
Oct 15 Python
Python/Django后端使用PIL Image生成头像缩略图
Apr 30 Python
python and or用法详解
Jun 26 Python
python批量修改ssh密码的实现
Aug 08 Python
Pytorch之view及view_as使用详解
Dec 31 Python
win10安装tesserocr配置 Python使用tesserocr识别字母数字验证码
Jan 16 Python
tensorflow使用指定gpu的方法
Feb 04 Python
python数据类型可变不可变知识点总结
Mar 06 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
python 命令行传参方法总结
May 25 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
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP 字符串分割和比较
2009/10/06 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP获取不了React Native Fecth参数的解决办法
2016/08/26 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
PHP+Ajax实现的检测用户名功能简单示例
2019/02/12 PHP
[转]JS宝典学习笔记
2007/02/07 Javascript
3款实用的在线JS代码工具(国外)
2012/03/15 Javascript
jQuery中(function(){})()执行顺序的理解
2013/03/05 Javascript
js动态切换图片的方法
2015/01/20 Javascript
javascript实现2016新年版日历
2016/01/25 Javascript
js创建数组的简单方法
2016/07/27 Javascript
AngularJS使用ng-options指令实现下拉框
2016/08/23 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
Vue实现todolist删除功能
2018/06/26 Javascript
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
Openlayers实现地图的基本操作
2020/09/28 Javascript
[03:23:49]2016.12.17日完美“圣”典全回顾
2016/12/19 DOTA
Python3中列表list合并的四种方法
2019/04/19 Python
python如何删除文件中重复的字段
2019/07/16 Python
Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
2020/05/11 Python
Python DES加密实现原理及实例解析
2020/07/17 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
HTML 5.1来了 9月份正式发布 更新内容预览
2016/04/26 HTML / CSS
台湾时尚彩瞳专门店:imeime
2019/08/16 全球购物
应届护士推荐信
2013/11/16 职场文书
个人求职信范文分享
2013/12/13 职场文书
老总助理工作岗位职责
2014/02/06 职场文书
办公室打字员岗位职责
2014/04/16 职场文书
代理人委托书
2014/09/16 职场文书
公司周年庆典标语
2014/10/07 职场文书
爱心捐款活动总结
2015/05/09 职场文书
2019年度行政文员工作计划范本!
2019/07/04 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
使用Docker容器部署rocketmq单机的全过程
2022/04/03 Servers