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数据结构之二叉树的统计与转换实例
Apr 29 Python
在Python的Flask框架中实现单元测试的教程
Apr 20 Python
在Django的上下文中设置变量的方法
Jul 20 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
浅析Python四种数据类型
Sep 26 Python
对python中的six.moves模块的下载函数urlretrieve详解
Dec 19 Python
python3使用matplotlib绘制条形图
Mar 25 Python
Flask教程之重定向与错误处理实例分析
Aug 01 Python
python requests库爬取豆瓣电视剧数据并保存到本地详解
Aug 10 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
python对execl 处理操作代码
Jun 22 Python
使用pandas或numpy处理数据中的空值(np.isnan()/pd.isnull())
May 14 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数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
2011/10/31 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
Thinkphp5.0 框架使用模型Model添加、更新、删除数据操作详解
2019/10/11 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
认识延迟时间为0的setTimeout
2008/05/16 Javascript
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
JavaScript 嵌套函数指向this对象错误的解决方法
2010/03/15 Javascript
js实现在页面上弹出蒙板技巧简单实用
2013/04/16 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
JavaScript构建自己的对象示例
2016/11/29 Javascript
Vuex之理解Mutations的用法实例
2017/04/19 Javascript
Javascript中的async awai的用法
2017/05/17 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
Vue.js用法详解
2017/11/13 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
利用Vconsole和Fillder进行移动端抓包调试方法
2019/03/05 Javascript
JS实现星星海特效
2019/12/24 Javascript
Django自定义分页效果
2017/06/27 Python
python 含子图的gif生成时内存溢出的方法
2019/07/07 Python
500行python代码实现飞机大战
2020/04/24 Python
Python实现七个基本算法的实例代码
2020/10/08 Python
html5新增的定时器requestAnimationFrame实现进度条功能
2018/12/13 HTML / CSS
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
柏林通行证:Berlin Pass
2018/04/11 全球购物
八年级英语教学反思
2014/01/09 职场文书
女方婚礼新郎答谢词
2014/01/11 职场文书
京剧自荐信
2014/01/26 职场文书
运动员获奖感言
2014/08/15 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
Python竟然能剪辑视频
2021/05/25 Python
解决 redis 无法远程连接
2022/05/15 Redis
Java获取字符串编码格式实现思路
2022/09/23 Java/Android