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调用cmd命令行制作刷博器
Jan 13 Python
python使用在线API查询IP对应的地理位置信息实例
Jun 01 Python
Python实现的批量下载RFC文档
Mar 10 Python
Python实现针对中文排序的方法
May 09 Python
python数据类型_字符串常用操作(详解)
May 30 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
tornado 多进程模式解析
Jan 15 Python
Python enumerate索引迭代代码解析
Jan 19 Python
解读python如何实现决策树算法
Oct 11 Python
Django项目主urls导入应用中views的红线问题解决
Aug 10 Python
Python函数默认参数常见问题及解决方案
Mar 26 Python
Pandas之缺失数据的实现
Jan 06 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
MySQL授权问题总结
2007/05/06 PHP
php使用pdo连接mssql server数据库实例
2014/12/25 PHP
PHP中仿制 ecshop验证码实例
2017/01/06 PHP
apache集成php7.3.5的详细步骤
2019/06/20 PHP
javascript入门·图片对象(无刷新变换图片)\滚动图像
2007/10/01 Javascript
JS trim去空格的最佳实践
2011/10/30 Javascript
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
你必须知道的Javascript知识点之"单线程事件驱动"的使用
2013/04/23 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
jQuery实现的导航下拉菜单效果
2016/07/04 Javascript
NodeJs的优势和适合开发的程序
2016/08/14 NodeJs
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
angular源码学习第一篇 setupModuleLoader方法
2016/10/20 Javascript
详解webpack loader和plugin编写
2018/10/12 Javascript
Vue 数据绑定的原理分析
2020/11/16 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
[01:18]DOTA2超级联赛专访hanci ForLove淘汰感言曝光
2013/06/04 DOTA
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
python学习数据结构实例代码
2015/05/11 Python
浅谈python类属性的访问、设置和删除方法
2016/07/25 Python
Python 逐行分割大txt文件的方法
2017/10/10 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
python中将zip压缩包转为gz.tar的方法
2018/10/18 Python
Python基本socket通信控制操作示例
2019/01/30 Python
解决python super()调用多重继承函数的问题
2019/06/26 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
PyCharm Community安装与配置的详细教程
2020/11/24 Python
python 爬虫网页登陆的简单实现
2020/11/30 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
2021/02/24 Python
心得体会怎么写
2013/12/30 职场文书
仓库文员岗位职责
2014/04/06 职场文书
初中国旗下的演讲稿
2014/08/28 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
2019年特色火锅店的创业计划书模板
2019/08/28 职场文书
Android实现图片九宫格
2022/06/28 Java/Android