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基础教程之popen函数操作其它程序的输入和输出示例
Feb 10 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
Pycharm取消py脚本中SQL识别的方法
Nov 29 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
May 31 Python
python多线程同步之文件读写控制
Feb 25 Python
简单了解python元组tuple相关原理
Dec 02 Python
python读取文件指定行内容实例讲解
Mar 02 Python
Django --Xadmin 判断登录者身份实例
Jul 03 Python
如何一键升级Python所有包
Nov 05 Python
Python学习之time模块的基本使用
Jan 17 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
使用PHP curl模拟浏览器抓取网站信息
2013/10/28 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
top.location.href 没有权限 解决方法
2008/08/05 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
js实现弹出窗口、页面变成灰色并不可操作的例子分享
2014/05/10 Javascript
原生JS实现在线问卷调查投票特效
2017/01/03 Javascript
将鼠标焦点定位到文本框最后(代码分享)
2017/01/11 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
浅谈Vue内置component组件的应用场景
2018/03/27 Javascript
JavaScript实现浅拷贝与深拷贝的方法分析
2018/07/05 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
Node.js中出现未捕获异常的处理方法
2020/06/29 Javascript
ssm+vue前后端分离框架整合实现(附源码)
2020/07/08 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
使用Python的Django框架实现事务交易管理的教程
2015/04/20 Python
Python中.py文件打包成exe可执行文件详解
2017/03/22 Python
Python操作SQLite数据库的方法详解
2017/06/16 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python散点图实例之随机漫步
2018/08/27 Python
python变量命名的7条建议
2019/07/04 Python
Django admin model 汉化显示文字的实现方法
2019/08/12 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
详解python中eval函数的作用
2019/10/22 Python
500行python代码实现飞机大战
2020/04/24 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
python中的yield from语法快速学习
2020/11/06 Python
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
大学生物业管理求职信
2013/10/24 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
投标保密承诺书
2014/05/19 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
金融系毕业生自荐书
2014/07/08 职场文书
2014年工会工作总结
2014/11/12 职场文书
公司新员工欢迎词
2015/09/30 职场文书