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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
python中Pycharm 输出中文或打印中文乱码现象的解决办法
Jun 16 Python
使用Python写一个小游戏
Apr 02 Python
python中的反斜杠问题深入讲解
Aug 12 Python
Python发送邮件的实例代码讲解
Oct 16 Python
Python散点图与折线图绘制过程解析
Nov 30 Python
python学生管理系统的实现
Apr 05 Python
python 串行执行和并行执行实例
Apr 30 Python
python判断正负数方式
Jun 03 Python
Python RabbitMQ实现简单的进程间通信示例
Jul 02 Python
Python如何实现感知器的逻辑电路
Dec 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
php5 and xml示例
2006/11/22 PHP
php下用cookie统计用户访问网页次数的代码
2010/05/09 PHP
php程序效率优化的一些策略小结
2010/07/17 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
javascript事件问题
2009/09/05 Javascript
js数组操作常用方法
2014/05/08 Javascript
如何正确使用Nodejs 的 c++ module 链接到 OpenSSL
2014/08/03 NodeJs
使用变量动态设置js的属性名
2014/10/19 Javascript
javascript中基本类型和引用类型的区别分析
2015/05/12 Javascript
JQuery工具函数汇总
2015/06/15 Javascript
js实现四舍五入完全保留两位小数的方法
2016/08/02 Javascript
js+css3制作时钟特效
2016/10/16 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
Vue的编码技巧与规范使用详解
2019/08/28 Javascript
关于vue3.0中的this.$router.replace({ path: '/'})刷新无效果问题
2020/01/16 Javascript
Python中List.count()方法的使用教程
2015/05/20 Python
Python基于DES算法加密解密实例
2015/06/03 Python
在Django框架中编写Context处理器的方法
2015/07/20 Python
Python实现的栈(Stack)
2018/01/26 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
python高阶爬虫实战分析
2018/07/29 Python
详解PyTorch中Tensor的高阶操作
2019/08/18 Python
python shutil文件操作工具使用实例分析
2019/12/25 Python
python制作抽奖程序代码详解
2021/01/15 Python
网络安全方面的面试题
2015/11/04 面试题
大学生水文观测实习自我鉴定
2013/09/29 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
工作失误检讨书范文大全
2014/01/13 职场文书
团队拓展活动方案
2014/08/28 职场文书
投标邀请书范本
2015/02/02 职场文书
煤矿安全保证书
2015/02/27 职场文书
自我检讨书怎么写
2015/05/07 职场文书
使用vuex-persistedstate本地存储vuex
2022/04/29 Vue.js