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获取GY-85九轴模块信息示例
Dec 05 Python
Python实现的多线程端口扫描工具分享
Jan 21 Python
Python中type的构造函数参数含义说明
Jun 21 Python
python实现搜索本地文件信息写入文件的方法
Feb 22 Python
Centos Python2 升级到Python3的简单实现
Jun 21 Python
python 读写txt文件 json文件的实现方法
Oct 22 Python
实例详解Python装饰器与闭包
Jul 29 Python
python实现字典嵌套列表取值
Dec 16 Python
使用python采集Excel表中某一格数据
May 14 Python
Python 爬虫的原理
Jul 30 Python
python实战之用emoji表情生成文字
May 08 Python
python异常中else的实例用法
Jun 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
Oracle 常见问题解答
2006/10/09 PHP
php 5.3.5安装memcache注意事项小结
2011/04/12 PHP
无刷新动态加载数据 滚动条加载适合评论等页面
2013/10/16 PHP
php通过session防url攻击方法
2014/12/10 PHP
php nginx 实时输出的简单实现方法
2018/01/21 PHP
Valerio 发布了 Mootools
2006/09/23 Javascript
SWFObject Flash js调用类
2008/07/08 Javascript
JavaScript函数、方法、对象代码
2008/10/29 Javascript
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
背景图跟随鼠标移动的Mootools插件实现代码
2011/12/12 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
JavaScript闭包和范围实例详解
2016/12/19 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
webpack的tree shaking的实现方法
2019/09/18 Javascript
详解javascript脚本何时会被执行
2021/02/05 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python中xrange和range的区别
2014/05/13 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
Python中使用多进程来实现并行处理的方法小结
2017/08/09 Python
浅谈python 线程池threadpool之实现
2017/11/17 Python
Python决策树分类算法学习
2017/12/22 Python
基于Python的图像数据增强Data Augmentation解析
2019/08/13 Python
Python字符串和正则表达式中的反斜杠('\')问题详解
2019/09/03 Python
解决flask接口返回的内容中文乱码的问题
2020/04/03 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
Java语言的优势
2015/01/10 面试题
医学生自荐信范文
2013/12/03 职场文书
大四本科生的自我评价
2013/12/30 职场文书
给幼儿园老师的表扬信
2014/01/19 职场文书
经典团队口号大全
2014/06/21 职场文书
公司庆典欢迎词
2015/01/26 职场文书
大学生就业推荐表自我评价
2015/03/02 职场文书
廉洁自律准则学习心得体会
2016/01/13 职场文书
教你使用VS Code的MySQL扩展管理数据库的方法
2022/01/22 MySQL
「我的青春恋爱物语果然有问题。-妄言录-」第20卷封面公开
2022/03/21 日漫